{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# FSRS4Anki Optimizer mini-batch"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[![open in colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-spaced-repetition/fsrs4anki/blob/main/archive/experiment/mini-batch.ipynb)\n",
    "\n",
    "↑ Click the above button to open the optimizer on Google Colab.\n",
    "\n",
    "> If you can't see the button and are located in the Chinese Mainland, please use a proxy or VPN."
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Upload your **Anki Deck Package (.apkg)** file or **Anki Collection Package (.colpkg)** file on the `Left sidebar -> Files`, drag and drop your file in the current directory (not the `sample_data` directory). \n",
    "\n",
    "No need to include media. Need to include scheduling information. \n",
    "\n",
    "> If you use the latest version of Anki, please check the box `Support older Anki versions (slower/larger files)` when you export.\n",
    "\n",
    "You can export it via `File -> Export...` or `Ctrl + E` in the main window of Anki.\n",
    "\n",
    "Then replace the `filename` with yours in the next code cell. And set the `timezone` and `next_day_starts_at` which can be found in your preferences of Anki.\n",
    "\n",
    "After that, just run all (`Runtime -> Run all` or `Ctrl + F9`) and wait for minutes. You can see the optimal parameters in section **2.3 Result**. Copy them, replace the parameters in `fsrs4anki_scheduler.js`, and paste them into the custom scheduling of your deck options (require Anki version >= 2.1.55).\n",
    "\n",
    "**NOTE**: The default output is generated from my review logs. If you find the output is the same as mine, maybe your notebook hasn't run there.\n",
    "\n",
    "**Contribute to SRS Research**: If you want to share your data with me, please fill this form: https://forms.gle/KaojsBbhMCytaA7h8"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Here are some settings that you need to replace before running this optimizer.\n",
    "\n",
    "filename = \"../collection-2022-09-18@13-21-58.colpkg\"\n",
    "# If you upload deck file, replace it with your deck filename. E.g., ALL__Learning.apkg\n",
    "# If you upload collection file, replace it with your colpgk filename. E.g., collection-2022-09-18@13-21-58.colpkg\n",
    "\n",
    "# Replace it with your timezone. I'm in China, so I use Asia/Shanghai.\n",
    "# You can find your timezone here: https://gist.github.com/heyalexej/8bf688fd67d7199be4a1682b3eec7568\n",
    "timezone = 'Asia/Shanghai'\n",
    "\n",
    "# Replace it with your Anki's setting in Preferences -> Scheduling.\n",
    "next_day_starts_at = 4\n",
    "\n",
    "# Replace it if you don't want the optimizer to use the review logs before a specific date.\n",
    "revlog_start_date = \"2006-10-05\""
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1 Build dataset"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.1 Extract Anki collection & deck file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extract successfully!\n"
     ]
    }
   ],
   "source": [
    "import zipfile\n",
    "import sqlite3\n",
    "import time\n",
    "from tqdm import notebook\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import os\n",
    "from datetime import timedelta, datetime\n",
    "import matplotlib.pyplot as plt\n",
    "import math\n",
    "import sys\n",
    "import torch\n",
    "from torch import nn\n",
    "from sklearn.utils import shuffle\n",
    "# Extract the collection file or deck file to get the .anki21 database.\n",
    "with zipfile.ZipFile(f'./{filename}', 'r') as zip_ref:\n",
    "    zip_ref.extractall('./')\n",
    "    print(\"Extract successfully!\")\n",
    "\n",
    "\n",
    "notebook.tqdm.pandas()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2 Create time-series feature & analysis\n",
    "\n",
    "The following code cell will extract the review logs from your Anki collection and preprocess them to a trainset which is saved in [./revlog_history.tsv](./revlog_history.tsv).\n",
    "\n",
    "The time-series features are important in optimizing the model's parameters. For more detail, please see my paper: https://www.maimemo.com/paper/\n",
    "\n",
    "Then it will generate a concise analysis for your review logs. \n",
    "\n",
    "- The `r_history` is the history of ratings on each review. `3,3,3,1` means that you press `Good, Good, Good, Again`. It only contains the first rating for each card on the review date, i.e., when you press `Again` in review and  `Good` in relearning steps 10min later, only `Again` will be recorded.\n",
    "- The `avg_interval` is the actual average interval after you rate your cards as the `r_history`. It could be longer than the interval given by Anki's built-in scheduler because you reviewed some overdue cards.\n",
    "- The `avg_retention` is the average retention after you press as the `r_history`. `Again` counts as failed recall, and `Hard, Good and Easy` count as successful recall. Retention is the percentage of your successful recall.\n",
    "- The `stability` is the estimated memory state variable, which is an approximate interval that leads to 90% retention.\n",
    "- The `factor` is `stability / previous stability`.\n",
    "- The `group_cnt` is the number of review logs that have the same `r_history`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "revlog.csv saved.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fad1f9ec8aa94303a8bd648e4900c9be",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/30711 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Trainset saved.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "06c20f95d86e414ab884963f620e6e67",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/95123 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Retention calculated.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "58150efc6c2a478a9404bf69f98706e0",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/63978 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Stability calculated.\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4e40efec93d140ffaa50a883e14dd655",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/1190 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1:again, 2:hard, 3:good, 4:easy\n",
      "\n",
      "      r_history  avg_interval  avg_retention  stability  factor  group_cnt\n",
      "              1           1.7          0.765        1.0     inf       7997\n",
      "            1,3           3.9          0.876        4.2    4.20       4176\n",
      "          1,3,3           8.6          0.883        9.2    2.19       2711\n",
      "        1,3,3,3          18.2          0.858       14.0    1.52       1616\n",
      "      1,3,3,3,3          37.5          0.835       23.2    1.66        822\n",
      "    1,3,3,3,3,3          78.8          0.850       35.6    1.53        384\n",
      "  1,3,3,3,3,3,3         122.3          0.903       39.3    1.10        171\n",
      "              2           1.0          0.901        1.1     inf        240\n",
      "            2,3           3.5          0.946        8.3    7.55        201\n",
      "          2,3,3          11.1          0.890        7.1    0.86        160\n",
      "              3           1.5          0.962        5.4     inf       9134\n",
      "            3,3           3.9          0.966       15.2    2.81       6589\n",
      "          3,3,3           9.0          0.960       23.7    1.56       5162\n",
      "        3,3,3,3          19.4          0.942       44.2    1.86       3519\n",
      "      3,3,3,3,3          39.1          0.926       54.5    1.23       1922\n",
      "    3,3,3,3,3,3          76.6          0.930      106.8    1.96       1074\n",
      "  3,3,3,3,3,3,3         118.7          0.949      155.3    1.45        480\n",
      "3,3,3,3,3,3,3,3         131.1          0.970      617.2    3.97        100\n",
      "              4           3.8          0.966       12.1     inf      11599\n",
      "            4,3           8.1          0.975       38.9    3.21       7517\n",
      "          4,3,3          18.0          0.963       56.8    1.46       5303\n",
      "        4,3,3,3          33.3          0.952       84.3    1.48       3012\n",
      "      4,3,3,3,3          48.3          0.953      128.3    1.52       1353\n",
      "    4,3,3,3,3,3          67.3          0.958      112.9    0.88        496\n",
      "  4,3,3,3,3,3,3          77.6          0.978      113.2    1.00        244\n",
      "4,3,3,3,3,3,3,3         112.9          0.984      177.8    1.57        168\n",
      "Analysis saved!\n"
     ]
    }
   ],
   "source": [
    "if os.path.isfile(\"collection.anki21b\"):\n",
    "    os.remove(\"collection.anki21b\")\n",
    "    raise Exception(\n",
    "        \"Please export the file with `support older Anki versions` if you use the latest version of Anki.\")\n",
    "elif os.path.isfile(\"collection.anki21\"):\n",
    "    con = sqlite3.connect(\"collection.anki21\")\n",
    "elif os.path.isfile(\"collection.anki2\"):\n",
    "    con = sqlite3.connect(\"collection.anki2\")\n",
    "else:\n",
    "    raise Exception(\"Collection not exist!\")\n",
    "cur = con.cursor()\n",
    "res = cur.execute(\"SELECT * FROM revlog\")\n",
    "revlog = res.fetchall()\n",
    "\n",
    "df = pd.DataFrame(revlog)\n",
    "df.columns = ['id', 'cid', 'usn', 'r', 'ivl',\n",
    "              'last_lvl', 'factor', 'time', 'type']\n",
    "df = df[(df['cid'] <= time.time() * 1000) &\n",
    "        (df['id'] <= time.time() * 1000) &\n",
    "        (df['r'] > 0)].copy()\n",
    "df['create_date'] = pd.to_datetime(df['cid'] // 1000, unit='s')\n",
    "df['create_date'] = df['create_date'].dt.tz_localize(\n",
    "    'UTC').dt.tz_convert(timezone)\n",
    "df['review_date'] = pd.to_datetime(df['id'] // 1000, unit='s')\n",
    "df['review_date'] = df['review_date'].dt.tz_localize(\n",
    "    'UTC').dt.tz_convert(timezone)\n",
    "df.drop(df[df['review_date'].dt.year < 2006].index, inplace=True)\n",
    "df.sort_values(by=['cid', 'id'], inplace=True, ignore_index=True)\n",
    "type_sequence = np.array(df['type'])\n",
    "time_sequence = np.array(df['time'])\n",
    "df.to_csv(\"revlog.csv\", index=False)\n",
    "print(\"revlog.csv saved.\")\n",
    "df = df[df['type'] != 3].copy()\n",
    "df['real_days'] = df['review_date'] - timedelta(hours=next_day_starts_at)\n",
    "df['real_days'] = pd.DatetimeIndex(df['real_days'].dt.floor('D', ambiguous='infer', nonexistent='shift_forward')).to_julian_date()\n",
    "df.drop_duplicates(['cid', 'real_days'], keep='first', inplace=True)\n",
    "df['delta_t'] = df.real_days.diff()\n",
    "df.dropna(inplace=True)\n",
    "df['delta_t'] = df['delta_t'].astype(dtype=int)\n",
    "df['i'] = 1\n",
    "df['r_history'] = \"\"\n",
    "df['t_history'] = \"\"\n",
    "col_idx = {key: i for i, key in enumerate(df.columns)}\n",
    "\n",
    "\n",
    "# code from https://github.com/L-M-Sherlock/anki_revlog_analysis/blob/main/revlog_analysis.py\n",
    "def get_feature(x):\n",
    "    last_kind = None\n",
    "    for idx, log in enumerate(x.itertuples()):\n",
    "        if last_kind is not None and last_kind in (1, 2) and log.type == 0:\n",
    "            return x.iloc[:idx]\n",
    "        last_kind = log.type\n",
    "        if idx == 0:\n",
    "            if log.type != 0:\n",
    "                return x.iloc[:idx]\n",
    "            x.iloc[idx, col_idx['delta_t']] = 0\n",
    "        if idx == x.shape[0] - 1:\n",
    "            break\n",
    "        x.iloc[idx + 1, col_idx['i']] = x.iloc[idx, col_idx['i']] + 1\n",
    "        x.iloc[idx + 1, col_idx['t_history']] = f\"{x.iloc[idx, col_idx['t_history']]},{x.iloc[idx, col_idx['delta_t']]}\"\n",
    "        x.iloc[idx + 1, col_idx['r_history']] = f\"{x.iloc[idx, col_idx['r_history']]},{x.iloc[idx, col_idx['r']]}\"\n",
    "    return x\n",
    "\n",
    "df = df.groupby('cid', as_index=False, group_keys=False).progress_apply(get_feature)\n",
    "df = df[df['id'] >= time.mktime(datetime.strptime(revlog_start_date, \"%Y-%m-%d\").timetuple()) * 1000]\n",
    "df[\"t_history\"] = df[\"t_history\"].map(lambda x: x[1:] if len(x) > 1 else x)\n",
    "df[\"r_history\"] = df[\"r_history\"].map(lambda x: x[1:] if len(x) > 1 else x)\n",
    "df.to_csv('revlog_history.tsv', sep=\"\\t\", index=False)\n",
    "print(\"Trainset saved.\")\n",
    "\n",
    "def cal_retention(group: pd.DataFrame) -> pd.DataFrame:\n",
    "    group['retention'] = round(group['r'].map(lambda x: {1: 0, 2: 1, 3: 1, 4: 1}[x]).mean(), 4)\n",
    "    group['total_cnt'] = group.shape[0]\n",
    "    return group\n",
    "\n",
    "df = df.groupby(by=['r_history', 'delta_t'], group_keys=False).progress_apply(cal_retention)\n",
    "print(\"Retention calculated.\")\n",
    "df = df.drop(columns=['id', 'cid', 'usn', 'ivl', 'last_lvl', 'factor', 'time', 'type', 'create_date', 'review_date', 'real_days', 'r', 't_history'])\n",
    "df.drop_duplicates(inplace=True)\n",
    "df['retention'] = df['retention'].map(lambda x: max(min(0.99, x), 0.01))\n",
    "\n",
    "def cal_stability(group: pd.DataFrame) -> pd.DataFrame:\n",
    "    group_cnt = sum(group['total_cnt'])\n",
    "    if group_cnt < 10:\n",
    "        return pd.DataFrame()\n",
    "    group['group_cnt'] = group_cnt\n",
    "    if group['i'].values[0] > 1:\n",
    "        r_ivl_cnt = sum(group['delta_t'] * group['retention'].map(np.log) * pow(group['total_cnt'], 2))\n",
    "        ivl_ivl_cnt = sum(group['delta_t'].map(lambda x: x ** 2) * pow(group['total_cnt'], 2))\n",
    "        group['stability'] = round(np.log(0.9) / (r_ivl_cnt / ivl_ivl_cnt), 1)\n",
    "    else:\n",
    "        group['stability'] = 0.0\n",
    "    group['avg_retention'] = round(sum(group['retention'] * pow(group['total_cnt'], 2)) / sum(pow(group['total_cnt'], 2)), 3)\n",
    "    group['avg_interval'] = round(sum(group['delta_t'] * pow(group['total_cnt'], 2)) / sum(pow(group['total_cnt'], 2)), 1)\n",
    "    del group['total_cnt']\n",
    "    del group['retention']\n",
    "    del group['delta_t']\n",
    "    return group\n",
    "\n",
    "df = df.groupby(by=['r_history'], group_keys=False).progress_apply(cal_stability)\n",
    "print(\"Stability calculated.\")\n",
    "df.reset_index(drop = True, inplace = True)\n",
    "df.drop_duplicates(inplace=True)\n",
    "df.sort_values(by=['r_history'], inplace=True, ignore_index=True)\n",
    "\n",
    "if df.shape[0] > 0:\n",
    "    for idx in notebook.tqdm(df.index):\n",
    "        item = df.loc[idx]\n",
    "        index = df[(df['i'] == item['i'] + 1) & (df['r_history'].str.startswith(item['r_history']))].index\n",
    "        df.loc[index, 'last_stability'] = item['stability']\n",
    "    df['factor'] = round(df['stability'] / df['last_stability'], 2)\n",
    "    df = df[(df['i'] >= 2) & (df['group_cnt'] >= 100)]\n",
    "    df['last_recall'] = df['r_history'].map(lambda x: x[-1])\n",
    "    df = df[df.groupby(['i', 'r_history'], group_keys=False)['group_cnt'].transform(max) == df['group_cnt']]\n",
    "    df.to_csv('./stability_for_analysis.tsv', sep='\\t', index=None)\n",
    "    print(\"1:again, 2:hard, 3:good, 4:easy\\n\")\n",
    "    print(df[df['r_history'].str.contains(r'^[1-4][^124]*$', regex=True)][['r_history', 'avg_interval', 'avg_retention', 'stability', 'factor', 'group_cnt']].to_string(index=False))\n",
    "    print(\"Analysis saved!\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2 Optimize parameter"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1 Define the model\n",
    "\n",
    "FSRS is a time-series model for predicting memory states."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "init_w = [1, 1, 0, 0.5, 0.5, 0.2, 2, 0.12, 0.8, 2, 0.2, 0.2, 1, 0.5]\n",
    "'''\n",
    "w[0]: initial_stability_for_again_answer\n",
    "w[1]: initial_stability_step_per_rating\n",
    "w[2]: initial_difficulty_for_good_answer\n",
    "w[3]: initial_difficulty_step_per_rating\n",
    "w[4]: next_difficulty_step_per_rating\n",
    "w[5]: next_difficulty_reversion_to_mean_speed (used to avoid ease hell)\n",
    "w[6]: next_stability_factor_after_success\n",
    "w[7]: next_stability_stabilization_decay_after_success\n",
    "w[8]: next_stability_retrievability_gain_after_success\n",
    "w[9]: next_stability_factor_after_failure\n",
    "w[10]: next_stability_difficulty_decay_after_success\n",
    "w[11]: next_stability_stability_gain_after_failure\n",
    "w[12]: next_stability_retrievability_gain_after_failure\n",
    "For more details about the parameters, please see: \n",
    "https://github.com/open-spaced-repetition/fsrs4anki/wiki/Free-Spaced-Repetition-Scheduler\n",
    "'''\n",
    "\n",
    "\n",
    "class FSRS(nn.Module):\n",
    "    def __init__(self, w):\n",
    "        super(FSRS, self).__init__()\n",
    "        self.w = nn.Parameter(torch.tensor(w))\n",
    "\n",
    "    def stability_after_success(self, state, new_d, r):\n",
    "        new_s = state[:,0] * (1 + torch.exp(self.w[6]) *\n",
    "                        (torch.exp(-self.w[13] * new_d) + self.w[2]) *\n",
    "                        torch.pow(state[:,0], -self.w[7]) *\n",
    "                        (torch.exp((1 - r) * self.w[8]) - 1))\n",
    "        return new_s\n",
    "    \n",
    "    def stability_after_failure(self, state, new_d, r):\n",
    "        new_s = self.w[9] * torch.exp(-self.w[10] * new_d) * torch.pow(\n",
    "            state[:,0], self.w[11]) * torch.exp((1 - r) * self.w[12])\n",
    "        return new_s\n",
    "\n",
    "    def step(self, X, state):\n",
    "        '''\n",
    "        :param X: shape[batch_size, 2], X[:,0] is elapsed time, X[:,1] is rating\n",
    "        :param state: shape[batch_size, 2], state[:,0] is stability, state[:,1] is difficulty\n",
    "        :return state:\n",
    "        '''\n",
    "        if torch.equal(state, torch.zeros_like(state)):\n",
    "            # first learn, init memory states\n",
    "            new_s = self.w[0] + self.w[1] * (X[:,1] - 1)\n",
    "            new_d = 0 - self.w[3] * (X[:,1] - 3)\n",
    "        else:\n",
    "            r = torch.exp(np.log(0.9) * X[:,0] / state[:,0])\n",
    "            new_d = state[:,1] - self.w[4] * (X[:,1] - 3)\n",
    "            new_d = self.mean_reversion(0, new_d)\n",
    "            condition = X[:,1] > 1\n",
    "            new_s = torch.where(condition, self.stability_after_success(state, new_d, r), self.stability_after_failure(state, new_d, r))\n",
    "        return torch.stack([new_s, new_d], dim=1)\n",
    "\n",
    "    def forward(self, inputs, state=None):\n",
    "        '''\n",
    "        :param inputs: shape[seq_len, batch_size, 2]\n",
    "        '''\n",
    "        if state is None:\n",
    "            state = torch.zeros((inputs.shape[1], 2))\n",
    "        else:\n",
    "            state, = state\n",
    "        outputs = []\n",
    "        for X in inputs:\n",
    "            state = self.step(X, state)\n",
    "            outputs.append(state)\n",
    "        return torch.stack(outputs), state\n",
    "\n",
    "    def mean_reversion(self, init, current):\n",
    "        return self.w[5] * init + (1-self.w[5]) * current\n",
    "\n",
    "\n",
    "class WeightClipper(object):\n",
    "    def __init__(self, frequency=1):\n",
    "        self.frequency = frequency\n",
    "\n",
    "    def __call__(self, module):\n",
    "        if hasattr(module, 'w'):\n",
    "            w = module.w.data\n",
    "            w[0] = w[0].clamp(0.1, 10)\n",
    "            w[1] = w[1].clamp(0.1, 5)\n",
    "            w[2] = w[2].clamp(0, 1)\n",
    "            w[3] = w[3].clamp(0.1, 5)\n",
    "            w[4] = w[4].clamp(0.1, 5)\n",
    "            w[5] = w[5].clamp(0, 0.5)\n",
    "            w[6] = w[6].clamp(0, 3)\n",
    "            w[7] = w[7].clamp(0.01, 0.5)\n",
    "            w[8] = w[8].clamp(0.01, 3)\n",
    "            w[9] = w[9].clamp(0.5, 5)\n",
    "            w[10] = w[10].clamp(0.01, 2)\n",
    "            w[11] = w[11].clamp(0.01, 0.9)\n",
    "            w[12] = w[12].clamp(0.01, 2)\n",
    "            module.w.data = w\n",
    "\n",
    "def lineToTensor(line):\n",
    "    ivl = line[0].split(',')\n",
    "    response = line[1].split(',')\n",
    "    tensor = torch.zeros(len(response), 2)\n",
    "    for li, response in enumerate(response):\n",
    "        tensor[li][0] = int(ivl[li])\n",
    "        tensor[li][1] = int(response)\n",
    "    return tensor\n",
    "\n",
    "from torch.utils.data import Dataset, DataLoader, Sampler\n",
    "from torch.nn.utils.rnn import pad_sequence, pack_padded_sequence, pad_packed_sequence\n",
    "from typing import List\n",
    "\n",
    "class RevlogDataset(Dataset):\n",
    "    def __init__(self, dataframe):\n",
    "        padded = pad_sequence(dataframe['tensor'].to_list(), batch_first=True, padding_value=0)\n",
    "        self.x_train = padded.int()\n",
    "        self.t_train = torch.tensor(dataframe['delta_t'].values, dtype=torch.int)\n",
    "        self.y_train = torch.tensor(dataframe['y'].values, dtype=torch.float)\n",
    "        self.seq_len = torch.tensor(dataframe['tensor'].map(len).values, dtype=torch.long)\n",
    "\n",
    "    def __getitem__(self, idx):\n",
    "        return self.x_train[idx], self.t_train[idx], self.y_train[idx], self.seq_len[idx]\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.y_train)\n",
    "    \n",
    "class RevlogSampler(Sampler[List[int]]):\n",
    "    def __init__(self, data_source, batch_size):\n",
    "        self.data_source = data_source\n",
    "        self.batch_size = batch_size\n",
    "        lengths = np.array(data_source.seq_len)\n",
    "        indices = np.argsort(lengths)\n",
    "        full_batches, remainder = divmod(indices.size, self.batch_size)\n",
    "        if full_batches > 0:\n",
    "            self.batch_indices = np.split(indices[:-remainder], full_batches)\n",
    "        else:\n",
    "            self.batch_indices = []\n",
    "        if remainder:\n",
    "            self.batch_indices.append(indices[-remainder:])\n",
    "        self.batch_nums = len(self.batch_indices)\n",
    "        # seed = int(torch.empty((), dtype=torch.int64).random_().item())\n",
    "        seed = 2023\n",
    "        self.generator = torch.Generator()\n",
    "        self.generator.manual_seed(seed)\n",
    "\n",
    "    def __iter__(self):\n",
    "        yield from [self.batch_indices[idx] for idx in torch.randperm(self.batch_nums, generator=self.generator).tolist()]\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.data_source)\n",
    "\n",
    "\n",
    "def collate_fn(batch):\n",
    "    sequences, delta_ts, labels, seq_lens = zip(*batch)\n",
    "    sequences_packed = pack_padded_sequence(torch.stack(sequences, dim=1), lengths=torch.stack(seq_lens), batch_first=False, enforce_sorted=False)\n",
    "    sequences_padded, length = pad_packed_sequence(sequences_packed, batch_first=False)\n",
    "    sequences_padded = torch.as_tensor(sequences_padded)\n",
    "    seq_lens = torch.as_tensor(length)\n",
    "    delta_ts = torch.as_tensor(delta_ts)\n",
    "    labels = torch.as_tensor(labels)\n",
    "    return sequences_padded, delta_ts, labels, seq_lens\n",
    "\n",
    "class Optimizer(object):\n",
    "    def __init__(self, train_set, test_set, n_epoch=1, lr=1e-2, batch_size=256) -> None:\n",
    "        self.model = FSRS(init_w)\n",
    "        self.optimizer = torch.optim.Adam(self.model.parameters(), lr=lr)\n",
    "        self.clipper = WeightClipper()\n",
    "        self.batch_size = batch_size\n",
    "        self.build_dataset(train_set, test_set)\n",
    "        self.n_epoch = n_epoch\n",
    "        self.batch_nums = self.next_train_data_loader.batch_sampler.batch_nums\n",
    "        self.scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(self.optimizer, T_max=self.batch_nums * n_epoch)\n",
    "        self.avg_train_losses = []\n",
    "        self.avg_eval_losses = []\n",
    "        self.loss_fn = nn.BCELoss(reduction='sum')\n",
    "\n",
    "    def build_dataset(self, train_set, test_set):\n",
    "        pre_train_set = train_set[train_set['i'] == 2]\n",
    "        self.pre_train_set = RevlogDataset(pre_train_set)\n",
    "        sampler = RevlogSampler(self.pre_train_set, batch_size=self.batch_size)\n",
    "        self.pre_train_data_loader = DataLoader(self.pre_train_set, batch_sampler=sampler, collate_fn=collate_fn)\n",
    "\n",
    "        next_train_set = train_set[train_set['i'] > 2]\n",
    "        self.next_train_set = RevlogDataset(next_train_set)\n",
    "        sampler = RevlogSampler(self.next_train_set, batch_size=self.batch_size)\n",
    "        self.next_train_data_loader = DataLoader(self.next_train_set, batch_sampler=sampler, collate_fn=collate_fn)\n",
    "\n",
    "        self.train_set = RevlogDataset(train_set)\n",
    "        sampler = RevlogSampler(self.train_set, batch_size=self.batch_size)\n",
    "        self.train_data_loader = DataLoader(self.train_set, batch_sampler=sampler, collate_fn=collate_fn)\n",
    "\n",
    "        self.test_set = RevlogDataset(test_set)\n",
    "        sampler = RevlogSampler(self.test_set, batch_size=self.batch_size)\n",
    "        self.test_data_loader = DataLoader(self.test_set, batch_sampler=sampler, collate_fn=collate_fn)\n",
    "        print(\"dataset built\")\n",
    "\n",
    "    def train(self):\n",
    "        # pretrain\n",
    "        self.eval()\n",
    "        pbar = notebook.tqdm(desc=\"pre-train\", colour=\"red\", total=len(self.pre_train_data_loader))\n",
    "\n",
    "        for i, batch in enumerate(self.pre_train_data_loader):\n",
    "            self.model.train()\n",
    "            self.optimizer.zero_grad()\n",
    "            sequences, delta_ts, labels, seq_lens = batch\n",
    "            real_batch_size = seq_lens.shape[0]\n",
    "            outputs, _ = self.model(sequences)\n",
    "            stabilities = outputs[seq_lens-1, torch.arange(real_batch_size), 0]\n",
    "            retentions = torch.exp(np.log(0.9) * delta_ts / stabilities)\n",
    "            loss = self.loss_fn(retentions, labels)\n",
    "            loss.backward()\n",
    "            self.optimizer.step()\n",
    "            self.model.apply(self.clipper)\n",
    "            pbar.update(n=real_batch_size)\n",
    "\n",
    "        pbar.close()\n",
    "        for name, param in self.model.named_parameters():\n",
    "            print(f\"{name}: {list(map(lambda x: round(float(x), 4),param))}\")\n",
    "\n",
    "        epoch_len = len(self.next_train_data_loader)\n",
    "        pbar = notebook.tqdm(desc=\"train\", colour=\"red\", total=epoch_len*self.n_epoch)\n",
    "        print_len = max(self.batch_nums*self.n_epoch // 10, 1)\n",
    "\n",
    "\n",
    "        for k in range(self.n_epoch):\n",
    "            self.eval()\n",
    "            for i, batch in enumerate(self.next_train_data_loader):\n",
    "                self.model.train()\n",
    "                self.optimizer.zero_grad()\n",
    "                sequences, delta_ts, labels, seq_lens = batch\n",
    "                real_batch_size = seq_lens.shape[0]\n",
    "                outputs, _ = self.model(sequences)\n",
    "                stabilities = outputs[seq_lens-1, torch.arange(real_batch_size), 0]\n",
    "                retentions = torch.exp(np.log(0.9) * delta_ts / stabilities)\n",
    "                loss = self.loss_fn(retentions, labels)\n",
    "                loss.backward()\n",
    "                for param in self.model.parameters():\n",
    "                    param.grad[:2] = torch.zeros(2)\n",
    "                self.optimizer.step()\n",
    "                self.scheduler.step()\n",
    "                self.model.apply(self.clipper)\n",
    "                pbar.update(real_batch_size)\n",
    "\n",
    "                if (k * self.batch_nums + i + 1) % print_len == 0:\n",
    "                    print(f\"iteration: {k * epoch_len + (i + 1) * self.batch_size}\")\n",
    "                    for name, param in self.model.named_parameters():\n",
    "                        print(f\"{name}: {list(map(lambda x: round(float(x), 4),param))}\")\n",
    "        pbar.close()\n",
    "                \n",
    "        self.eval()\n",
    "\n",
    "        w = list(map(lambda x: round(float(x), 4), dict(self.model.named_parameters())['w'].data))\n",
    "        return w\n",
    "\n",
    "    def eval(self):\n",
    "        self.model.eval()\n",
    "        with torch.no_grad():\n",
    "            sampler = RevlogSampler(self.train_set, batch_size=4096)\n",
    "            train_data_loader = DataLoader(self.train_set, batch_sampler=sampler, collate_fn=collate_fn)\n",
    "            loss = 0\n",
    "            for batch in train_data_loader:\n",
    "                sequences, delta_ts, labels, seq_lens = batch\n",
    "                real_batch_size = seq_lens.shape[0]\n",
    "                outputs, _ = self.model(sequences)\n",
    "                stabilities = outputs[seq_lens-1, torch.arange(real_batch_size), 0]\n",
    "                retentions = torch.exp(np.log(0.9) * delta_ts / stabilities)\n",
    "                loss += self.loss_fn(retentions, labels)\n",
    "            self.avg_train_losses.append(loss/len(train_data_loader))\n",
    "            print(f\"Loss in trainset: {self.avg_train_losses[-1]:.4f}\")\n",
    "\n",
    "            sampler = RevlogSampler(self.test_set, batch_size=4096)\n",
    "            test_data_loader = DataLoader(self.test_set, batch_sampler=sampler, collate_fn=collate_fn)\n",
    "            loss = 0\n",
    "            for batch in test_data_loader:\n",
    "                sequences, delta_ts, labels, seq_lens = batch\n",
    "                real_batch_size = seq_lens.shape[0]\n",
    "                outputs, _ = self.model(sequences)\n",
    "                stabilities = outputs[seq_lens-1, torch.arange(real_batch_size), 0]\n",
    "                retentions = torch.exp(np.log(0.9) * delta_ts / stabilities)\n",
    "                loss += self.loss_fn(retentions, labels)\n",
    "            self.avg_eval_losses.append(loss/len(test_data_loader))\n",
    "            print(f\"Loss in testset: {self.avg_eval_losses[-1]:.4f}\")\n",
    "\n",
    "    def plot(self):\n",
    "        plt.plot(self.avg_train_losses, label='train')\n",
    "        plt.plot(self.avg_eval_losses, label='test')\n",
    "        plt.xlabel('epoch')\n",
    "        plt.ylabel('loss')\n",
    "        plt.legend()\n",
    "        plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2 Train the model\n",
    "\n",
    "The [./revlog_history.tsv](./revlog_history.tsv) generated before will be used for training the FSRS model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "bda7534acadb45c988624c4509f3b854",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/223795 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tensorized!\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/homebrew/Caskroom/miniforge/base/envs/fsrs4anki/lib/python3.8/site-packages/sklearn/model_selection/_split.py:885: UserWarning: The least populated class in y has only 1 members, which is less than n_splits=3.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TRAIN: 147736 TEST: 76059\n",
      "dataset built\n",
      "Loss in trainset: 0.3578\n",
      "Loss in testset: 0.3241\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a88b5f60b0724beb819277840f13ec3c",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "pre-train:   0%|          | 0/17371 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w: [0.9695, 1.95, 0.0, 0.5, 0.5, 0.2, 2.0, 0.12, 0.8, 2.0, 0.2, 0.2, 1.0, 0.5]\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fd2319ad936a419d86cee4672cde280a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "train:   0%|          | 0/391095 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loss in trainset: 0.3513\n",
      "Loss in testset: 0.3139\n",
      "iteration: 39168\n",
      "w: [1.0457, 1.9732, 0.327, 0.6821, 0.733, 0.1289, 2.5362, 0.3353, 1.4506, 1.341, 0.1924, 0.28, 1.2267, 1.271]\n",
      "iteration: 78336\n",
      "w: [1.0457, 1.9732, 0.1831, 0.6005, 0.6632, 0.1384, 2.6247, 0.2501, 1.5326, 1.1286, 0.0927, 0.4506, 1.3101, 1.3418]\n",
      "iteration: 117504\n",
      "w: [1.0457, 1.9732, 0.1361, 0.6231, 0.5827, 0.0878, 2.7444, 0.2602, 1.6314, 1.0228, 0.1674, 0.4984, 1.3421, 1.188]\n",
      "Loss in trainset: 0.3283\n",
      "Loss in testset: 0.2907\n",
      "iteration: 156477\n",
      "w: [1.0457, 1.9732, 0.183, 0.6775, 0.5776, 0.0426, 2.7151, 0.338, 1.624, 0.9211, 0.0957, 0.4679, 1.1802, 1.267]\n",
      "iteration: 195645\n",
      "w: [1.0457, 1.9732, 0.1126, 0.6604, 0.6574, 0.0672, 2.7267, 0.2183, 1.6372, 0.7833, 0.1333, 0.558, 1.1989, 1.4117]\n",
      "iteration: 234813\n",
      "w: [1.0457, 1.9732, 0.0831, 0.5674, 0.5629, 0.0666, 2.7419, 0.257, 1.6382, 0.7575, 0.09, 0.5229, 1.2286, 1.3016]\n",
      "Loss in trainset: 0.3275\n",
      "Loss in testset: 0.2896\n",
      "iteration: 273786\n",
      "w: [1.0457, 1.9732, 0.101, 0.5608, 0.4721, 0.0946, 2.7626, 0.2332, 1.6452, 0.7326, 0.0857, 0.6055, 1.1662, 1.2171]\n",
      "iteration: 312954\n",
      "w: [1.0457, 1.9732, 0.0811, 0.5096, 0.5179, 0.0879, 2.7861, 0.2135, 1.6612, 0.6926, 0.0895, 0.5468, 1.1298, 1.226]\n",
      "iteration: 352122\n",
      "w: [1.0457, 1.9732, 0.0776, 0.5487, 0.499, 0.0962, 2.7801, 0.2248, 1.6508, 0.706, 0.0668, 0.5882, 1.1349, 1.2341]\n",
      "iteration: 391290\n",
      "w: [1.0457, 1.9732, 0.0719, 0.5502, 0.5053, 0.0886, 2.7789, 0.2293, 1.6492, 0.7117, 0.0598, 0.5886, 1.138, 1.2416]\n",
      "Loss in trainset: 0.3272\n",
      "Loss in testset: 0.2893\n"
     ]
    },
    {
     "data": {
      "image/png": "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U6dONdq1a2f4+/sb4eHhxuDBg43PPvvMmuLLobS+ASX2iSf/DVamf572N3jLLbcYrVu3NpxOp9G4cWPjkksucYcDw/Ds/WcYFe+fp+2/0pwZgOrKPrQZhmHU7BiTiIiISN2iOUAiIiLidRSARERExOsoAImIiIjXUQASERERr6MAJCIiIl5HAUhERES8jgKQiIiIeB0FIBEREfE6CkAiIuWwfPlybDYbBw8etLoUEakGCkAiIiLidRSARERExOsoAImIR3C5XKSmptKmTRsCAgLo0aMH77zzDnDq8NTChQvp3r07/v7+XHTRRWzYsKHENt599126du2Kn58f0dHRPPfccyXeLywsZNy4cURFReHn50dMTAz//ve/S7RZs2YNcXFxNGjQgH79+pGZmVmzHReRGqEAJCIeITU1lTfffJPZs2ezceNG7rvvPm688UZWrFjhbvPggw/y3HPP8e2339K4cWOuvPJKjh07BpjBZeTIkYwaNYr169fzyCOP8PDDDzNnzhz3+klJSfz3v//lpZdeYtOmTbzyyisEBQWVqGPixIk899xzfPfdd/j4+HDLLbfUSv9FpHrpbvAiUucVFhYSHh7OsmXL6Nu3r3v5bbfdxuHDh7njjju4+OKLeeutt0hMTATg999/p2XLlsyZM4eRI0dyww03kJOTw6effupe/6GHHmLhwoVs3LiRzZs307FjR5YuXUpCQsJZNSxfvpyLL76YZcuWcckllwCwaNEihg8fzpEjR/D396/h34KIVCeNAIlInbd161YOHz7MkCFDCAoKcj/efPNNtm3b5m53ejgKDw+nY8eObNq0CYBNmzbRv3//Etvt378/W7Zsobi4mIyMDBwOB4MGDTpnLd27d3c/b9asGQD79u2rch9FpHb5WF2AiMj55OfnA7Bw4UJatGhR4j0/P78SIaiyAgICytXO19fX/dxmswHm/CQR8SwaARKROq9Lly74+fmxa9cuYmJiSjyioqLc7b755hv38wMHDrB582Y6d+4MQOfOnVm5cmWJ7a5cuZIOHTrgcDjo1q0bLperxJwiEam/NAIkInVecHAwDzzwAPfddx8ul4sBAwaQm5vLypUrCQkJoXXr1gA89thjNGrUiMjISCZOnEhERAQjRowA4P7776d3795MmTKFxMRE0tPTmTFjBi+//DIA0dHRjB49mltuuYWXXnqJHj16sHPnTvbt28fIkSOt6rqI1BAFIBHxCFOmTKFx48akpqby888/ExYWRs+ePfnHP/7hPgT11FNPcc8997BlyxZiY2P56KOPcDqdAPTs2ZP//e9/TJo0iSlTptCsWTMee+wxbr75ZvdnzJo1i3/84x+MGTOG3377jVatWvGPf/zDiu6KSA3TWWAi4vFOnqF14MABwsLCrC5HRDyA5gCJiIiI11EAEhEREa+jQ2AiIiLidTQCJCIiIl5HAUhERES8jgKQiIiIeB0FIBEREfE6CkAiIiLidRSARERExOsoAImIiIjXUQASERERr/P/ARC3eG81wd5zAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TRAIN: 149817 TEST: 73978\n",
      "dataset built\n",
      "Loss in trainset: 0.3490\n",
      "Loss in testset: 0.3409\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "dad72808c20d43f0a47149f6465564f5",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "pre-train:   0%|          | 0/19836 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w: [0.9229, 2.584, 0.0, 0.5, 0.5, 0.2, 2.0, 0.12, 0.8, 2.0, 0.2, 0.2, 1.0, 0.5]\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4d28cb9cef4842a693cfebedf1a88709",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "train:   0%|          | 0/389943 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loss in trainset: 0.3379\n",
      "Loss in testset: 0.3319\n",
      "iteration: 38912\n",
      "w: [0.7807, 2.6095, 0.2438, 0.5025, 0.802, 0.1107, 2.5985, 0.1941, 1.5183, 1.545, 0.2384, 0.3094, 0.9919, 1.2384]\n",
      "iteration: 77824\n",
      "w: [0.7807, 2.6095, 0.5275, 1.6072, 0.7971, 0.2035, 2.3645, 0.2657, 1.417, 1.2377, 0.1826, 0.3802, 1.2738, 1.9858]\n",
      "iteration: 116736\n",
      "w: [0.7807, 2.6095, 0.3988, 0.5785, 0.7549, 0.1226, 2.2447, 0.2206, 1.3714, 1.2982, 0.2053, 0.4272, 1.2473, 1.5724]\n",
      "Loss in trainset: 0.3187\n",
      "Loss in testset: 0.3122\n",
      "iteration: 155581\n",
      "w: [0.7807, 2.6095, 0.1882, 0.3721, 0.5538, 0.095, 2.3458, 0.0807, 1.4866, 1.1913, 0.1067, 0.4058, 1.3016, 1.4442]\n",
      "iteration: 194493\n",
      "w: [0.7807, 2.6095, 0.1045, 0.3938, 0.5966, 0.1037, 2.4278, 0.1506, 1.5811, 1.1437, 0.1261, 0.6105, 1.204, 1.5036]\n",
      "iteration: 233405\n",
      "w: [0.7807, 2.6095, 0.107, 0.4476, 0.5476, 0.0859, 2.5205, 0.21, 1.6565, 1.0573, 0.1144, 0.4963, 1.0702, 1.4766]\n",
      "Loss in trainset: 0.3181\n",
      "Loss in testset: 0.3116\n",
      "iteration: 272250\n",
      "w: [0.7807, 2.6095, 0.0991, 0.4859, 0.5081, 0.097, 2.5921, 0.1725, 1.7145, 1.0402, 0.1117, 0.5275, 1.0247, 1.4394]\n",
      "iteration: 311162\n",
      "w: [0.7807, 2.6095, 0.0716, 0.5246, 0.486, 0.0742, 2.5984, 0.1949, 1.7151, 1.0099, 0.1388, 0.5696, 0.9843, 1.4277]\n",
      "iteration: 350074\n",
      "w: [0.7807, 2.6095, 0.0778, 0.4778, 0.4848, 0.0989, 2.6199, 0.1849, 1.7322, 0.9836, 0.1439, 0.5466, 0.9562, 1.3991]\n",
      "iteration: 388986\n",
      "w: [0.7807, 2.6095, 0.0733, 0.4708, 0.4869, 0.0956, 2.6209, 0.188, 1.7328, 0.9869, 0.1398, 0.5479, 0.9594, 1.3998]\n",
      "Loss in trainset: 0.3166\n",
      "Loss in testset: 0.3101\n"
     ]
    },
    {
     "data": {
      "image/png": "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P39+0YXbu3btwvyP9Q9yc3MZOnQoe/bswcvLixYtWjBr1iwGDBhQ1Oarr74qClgAN910EwDjxo1j/PjxALz00kuYzWb69u1bbKFIERERETB4HSRXVt51FERERKT6KO/vb8OuQRIRERGprhSQREREREpQQBIREREpQQFJREREpAQFJBEREZESFJBERERESlBAEhERESlBAUlERESkBGNvlevCTq2vmZ2dbXAlIiIiUl6nfm+faZ1sBaQKOnr0KADh4eEGVyIiIiJn6+jRowQEBJT5vG41UkF2u519+/bh5+eHyWSqtONmZ2cTHh7O7t27a+wtTGp6H9U/11fT+1jT+wc1v4/qX8U5HA6OHj1KvXr1it3vtSSdQaogs9lMgwYNquz4/v7+NfI/+n+q6X1U/1xfTe9jTe8f1Pw+qn8V829njk7RRdoiIiIiJSggiYiIiJSggFTNeHh4MG7cODw8PIwupcrU9D6qf66vpvexpvcPan4f1b+qp4u0RURERErQGSQRERGREhSQREREREpQQBIREREpQQFJREREpAQFJANMnz6diIgIPD09iY2NZdWqVf/a/tNPP6VFixZ4enrStm1bvv322/NUacWdTR/ff/99TCZTsc3T0/M8Vnt2fvzxR6655hrq1auHyWRi7ty5Z3zNkiVLaN++PR4eHkRGRvL+++9XeZ0Vdbb9W7JkyWmfn8lkIj09/fwUfJaSkpLo2LEjfn5+1KlThz59+rBly5Yzvs5Vfg4r0j9X+xmcMWMG7dq1K1pEMC4uju++++5fX+Mqnx+cff9c7fMrafLkyZhMJkaMGPGv7c73Z6iAdJ59/PHHJCYmMm7cONasWUNUVBQ9e/bkwIEDpbZfvnw5N998M3feeSe//vorffr0oU+fPmzYsOE8V15+Z9tHcK6Wun///qJt586d57His5Obm0tUVBTTp08vV/s///yT3r17c9lll5GWlsaIESO46667WLBgQRVXWjFn279TtmzZUuwzrFOnThVVeG6WLl3K/fffz4oVK1i4cCEFBQVcccUV5ObmlvkaV/o5rEj/wLV+Bhs0aMDkyZNJTU3ll19+4fLLL+e6665j48aNpbZ3pc8Pzr5/4Fqf3z+tXr2aN954g3bt2v1rO0M+Q4ecV506dXLcf//9RV/bbDZHvXr1HElJSaW279+/v6N3797F9sXGxjruueeeKq3zXJxtH9977z1HQEDAeaqucgGOL7744l/bPProo47WrVsX2zdgwABHz549q7CyylGe/v3www8OwHH48OHzUlNlO3DggANwLF26tMw2rvhzeEp5+ufKP4On1KpVy/H222+X+pwrf36n/Fv/XPXzO3r0qOOiiy5yLFy40HHppZc6HnzwwTLbGvEZ6gzSeZSfn09qairx8fFF+8xmM/Hx8aSkpJT6mpSUlGLtAXr27Flme6NVpI8AOTk5NGrUiPDw8DP+peRqXO0zrKjo6Gjq1q1Ljx49WLZsmdHllFtWVhYAQUFBZbZx5c+wPP0D1/0ZtNlszJ49m9zcXOLi4kpt48qfX3n6B675+d1///307t37tM+mNEZ8hgpI51FmZiY2m43Q0NBi+0NDQ8u8XiM9Pf2s2hutIn1s3rw57777Ll9++SWzZs3CbrfTuXNn9uzZcz5KrnJlfYbZ2dkcP37coKoqT926dXn99df5/PPP+fzzzwkPD6dbt26sWbPG6NLOyG63M2LECLp06UKbNm3KbOdqP4enlLd/rvgzuH79enx9ffHw8ODee+/liy++oFWrVqW2dcXP72z654qf3+zZs1mzZg1JSUnlam/EZ+hWZUcWKae4uLhifxl17tyZli1b8sYbbzBx4kQDK5PyaN68Oc2bNy/6unPnzmzbto2XXnqJmTNnGljZmd1///1s2LCBn3/+2ehSqkR5++eKP4PNmzcnLS2NrKwsPvvsM2677TaWLl1aZohwNWfTP1f7/Hbv3s2DDz7IwoULq/XF5ApI51FISAgWi4WMjIxi+zMyMggLCyv1NWFhYWfV3mgV6WNJ7u7uXHzxxfzxxx9VUeJ5V9Zn6O/vj5eXl0FVVa1OnTpV+9AxbNgw5s2bx48//kiDBg3+ta2r/RzC2fWvJFf4GbRarURGRgLQoUMHVq9ezcsvv8wbb7xxWltX/PzOpn8lVffPLzU1lQMHDtC+ffuifTabjR9//JFp06aRl5eHxWIp9hojPkMNsZ1HVquVDh06kJycXLTPbreTnJxc5thyXFxcsfYACxcu/NexaCNVpI8l2Ww21q9fT926dauqzPPK1T7DypCWllZtPz+Hw8GwYcP44osvWLx4MY0bNz7ja1zpM6xI/0pyxZ9Bu91OXl5eqc+50udXln/rX0nV/fPr3r0769evJy0trWiLiYlh4MCBpKWlnRaOwKDPsMou/5ZSzZ492+Hh4eF4//33Hb/99ptjyJAhjsDAQEd6errD4XA4br31VseoUaOK2i9btszh5ubmeOGFFxybNm1yjBs3zuHu7u5Yv369UV04o7Pt41NPPeVYsGCBY9u2bY7U1FTHTTfd5PD09HRs3LjRqC78q6NHjzp+/fVXx6+//uoAHC+++KLj119/dezcudPhcDgco0aNctx6661F7bdv3+7w9vZ2PPLII45NmzY5pk+f7rBYLI758+cb1YV/dbb9e+mllxxz5851/P77747169c7HnzwQYfZbHYsWrTIqC78q/vuu88REBDgWLJkiWP//v1F27Fjx4rauPLPYUX652o/g6NGjXIsXbrU8eeffzrWrVvnGDVqlMNkMjm+//57h8Ph2p+fw3H2/XO1z680JWexVYfPUAHJAK+++qqjYcOGDqvV6ujUqZNjxYoVRc9deumljttuu61Y+08++cTRrFkzh9VqdbRu3drxzTffnOeKz97Z9HHEiBFFbUNDQx29evVyrFmzxoCqy+fUtPaS26k+3XbbbY5LL730tNdER0c7rFaro0mTJo733nvvvNddXmfbv2effdbRtGlTh6enpyMoKMjRrVs3x+LFi40pvhxK6xtQ7DNx5Z/DivTP1X4G77jjDkejRo0cVqvVUbt2bUf37t2LwoPD4dqfn8Nx9v1ztc+vNCUDUnX4DE0Oh8NRdeenRERERFyPrkESERERKUEBSURERKQEBSQRERGREhSQREREREpQQBIREREpQQFJREREpAQFJBEREZESFJBERERESlBAEhGpBEuWLMFkMnHkyBGjSxGRSqCAJCIiIlKCApKIiIhICQpIIlIj2O12kpKSaNy4MV5eXkRFRfHZZ58Bfw9/ffPNN7Rr1w5PT08uueQSNmzYUOwYn3/+Oa1bt8bDw4OIiAimTJlS7Pm8vDwee+wxwsPD8fDwIDIyknfeeadYm9TUVGJiYvD29qZz585s2bKlajsuIlVCAUlEaoSkpCQ+/PBDXn/9dTZu3MhDDz3EoEGDWLp0aVGbRx55hClTprB69Wpq167NNddcQ0FBAeAMNv379+emm25i/fr1jB8/nieffJL333+/6PWDBw/m//7v/3jllVfYtGkTb7zxBr6+vsXqGDNmDFOmTOGXX37Bzc2NO+6447z0X0Qql8nhcDiMLkJE5Fzk5eURFBTEokWLiIuLK9p/1113cezYMYYMGcJll13G7NmzGTBgAACHDh2iQYMGvP/++/Tv35+BAwdy8OBBvv/++6LXP/roo3zzzTds3LiRrVu30rx5cxYuXEh8fPxpNSxZsoTLLruMRYsW0b17dwC+/fZbevfuzfHjx/H09Kzi74KIVCadQRIRl/fHH39w7NgxevToga+vb9H24Ycfsm3btqJ2/wxPQUFBNG/enE2bNgGwadMmunTpUuy4Xbp04ffff8dms5GWlobFYuHSSy/911ratWtX9Lhu3boAHDhw4Jz7KCLnl5vRBYiInKucnBwAvvnmG+rXr1/sOQ8Pj2IhqaK8vLzK1c7d3b3osclkApzXR4mIa9EZJBFxea1atcLDw4Ndu3YRGRlZbAsPDy9qt2LFiqLHhw8fZuvWrbRs2RKAli1bsmzZsmLHXbZsGc2aNcNisdC2bVvsdnuxa5pEpObSGSQRcXl+fn48/PDDPPTQQ9jtdv7zn/+QlZXFsmXL8Pf3p1GjRgBMmDCB4OBgQkNDGTNmDCEhIfTp0weAkSNH0rFjRyZOnMiAAQNISUlh2rRpvPbaawBERERw2223cccdd/DKK68QFRXFzp07OXDgAP379zeq6yJSRRSQRKRGmDhxIrVr1yYpKYnt27cTGBhI+/btefzxx4uGuCZPnsyDDz7I77//TnR0NF9//TVWqxWA9u3b88knnzB27FgmTpxI3bp1mTBhArfffnvRe8yYMYPHH3+coUOH8tdff9GwYUMef/xxI7orIlVMs9hEpMY7NcPs8OHDBAYGGl2OiLgAXYMkIiIiUoICkoiIiEgJGmITERERKUFnkERERERKUEASERERKUEBSURERKQEBSQRERGREhSQREREREpQQBIREREpQQFJREREpAQFJBEREZES/h8WM+orExCYRAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TRAIN: 150037 TEST: 73758\n",
      "dataset built\n",
      "Loss in trainset: 0.3324\n",
      "Loss in testset: 0.3747\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "4227371e7ae047239cbe7620a299cd21",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "pre-train:   0%|          | 0/20733 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "w: [2.1209, 2.2311, 0.0, 0.5, 0.5, 0.2, 2.0, 0.12, 0.8, 2.0, 0.2, 0.2, 1.0, 0.5]\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b2cd263382b740a8b0f8b9e7ee193316",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "train:   0%|          | 0/387912 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loss in trainset: 0.3190\n",
      "Loss in testset: 0.3692\n",
      "iteration: 38656\n",
      "w: [2.2705, 2.3819, 0.2958, 1.2314, 0.6639, 0.1446, 2.3171, 0.2523, 1.2871, 1.4316, 0.2732, 0.4937, 1.3034, 1.5208]\n",
      "iteration: 77312\n",
      "w: [2.2705, 2.3819, 0.298, 0.8955, 0.6509, 0.2252, 2.4208, 0.1521, 1.4143, 1.26, 0.1556, 0.4674, 1.7065, 1.486]\n",
      "iteration: 115968\n",
      "w: [2.2705, 2.3819, 0.32, 0.4743, 0.6458, 0.1495, 2.5097, 0.1214, 1.5107, 1.1081, 0.0387, 0.3943, 1.747, 1.4683]\n",
      "Loss in trainset: 0.3043\n",
      "Loss in testset: 0.3558\n",
      "iteration: 154392\n",
      "w: [2.2705, 2.3819, 0.1629, 0.4646, 0.5139, 0.0787, 2.5862, 0.1717, 1.5975, 0.9458, 0.0125, 0.4188, 1.899, 1.5396]\n",
      "iteration: 193048\n",
      "w: [2.2705, 2.3819, 0.18, 0.5981, 0.436, 0.1286, 2.6292, 0.1398, 1.6329, 0.6413, 0.1063, 0.5731, 1.8113, 1.4821]\n",
      "iteration: 231704\n",
      "w: [2.2705, 2.3819, 0.1473, 0.4882, 0.4948, 0.1053, 2.5902, 0.1789, 1.5904, 0.6167, 0.0707, 0.5695, 1.7933, 1.4701]\n",
      "Loss in trainset: 0.3012\n",
      "Loss in testset: 0.3526\n",
      "iteration: 270128\n",
      "w: [2.2705, 2.3819, 0.12, 0.5902, 0.4903, 0.1036, 2.5981, 0.175, 1.5835, 0.552, 0.0705, 0.5299, 1.7116, 1.5105]\n",
      "iteration: 308784\n",
      "w: [2.2705, 2.3819, 0.0941, 0.546, 0.4471, 0.097, 2.6519, 0.1663, 1.6157, 0.6027, 0.055, 0.6062, 1.726, 1.4573]\n",
      "iteration: 347440\n",
      "w: [2.2705, 2.3819, 0.0823, 0.492, 0.4615, 0.0971, 2.6496, 0.1882, 1.6114, 0.5945, 0.0428, 0.6137, 1.722, 1.4464]\n",
      "iteration: 386096\n",
      "w: [2.2705, 2.3819, 0.0804, 0.4948, 0.4626, 0.097, 2.6493, 0.1882, 1.6105, 0.599, 0.0355, 0.6133, 1.7241, 1.4496]\n",
      "Loss in trainset: 0.2998\n",
      "Loss in testset: 0.3512\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAGwCAYAAABB4NqyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABWdklEQVR4nO3deVyVZf7/8dc5wDnsICK44b6bSYoyalM0oVhWU01FfZs0mqbvZIsNbZrftHIm2rPUrGmaFp3f5EzZpqYpbtWYmkqaIeaSuIE7COhhOffvj6NHUVTgADeH834+HvdDuc91bj+XR+LddV/XdVsMwzAQERER8SFWswsQERERaWgKQCIiIuJzFIBERETE5ygAiYiIiM9RABIRERGfowAkIiIiPkcBSERERHyOv9kFNEZOp5M9e/YQFhaGxWIxuxwRERGpBsMwOHr0KK1bt8ZqPf8YjwJQFfbs2UNcXJzZZYiIiEgt7Ny5k7Zt2563jQJQFcLCwgDXX2B4eLjJ1YiIiEh1FBYWEhcX5/45fj4KQFU4edsrPDxcAUhERMTLVGf6iiZBi4iIiM9RABIRERGfowAkIiIiPkdzgERERBqQ0+mktLTU7DK8UkBAAH5+fnVyLQUgERGRBlJaWsr27dtxOp1ml+K1IiMjadmypcf79CkAiYiINADDMNi7dy9+fn7ExcVdcKM+qcwwDEpKSti3bx8ArVq18uh6CkAiIiINoLy8nJKSElq3bk1wcLDZ5XiloKAgAPbt20dMTIxHt8MUP0VERBpARUUFADabzeRKvNvJ8FhWVubRdRSAREREGpCeMemZuvr7UwASERERn6MAJCIiIj5HAUhEREQaRIcOHZg8ebLZZQBaBdawig9C8X6I7gZa/igiIl4gKSmJ+Pj4Ogkuq1evJiQkxPOi6oACUEPK/gzm/BnsEdC2P7Qd4Dra9IfgKLOrExERqTHDMKioqMDf/8KRokWLFg1QUfVoGKIhHTsMAcHgKICti2HZ8/DPm+CFjjClP3xyL6x+B/auh4pys6sVEZF6ZBgGJaXlphyGYVSrxjvvvJNly5bx2muvYbFYsFgsvPfee1gsFr788kv69++P3W7nm2++YevWrfz2t78lNjaW0NBQBgwYwKJFiypd78xbYBaLhb///e/ccMMNBAcH07VrVz7//PO6/Gs+J40ANaRfPwyDx8C+jbBrNez63vXrwS2njh/+n6ttQDC07gdxA06NFIXGmFu/iIjUmWNlFfSasMCUP/unZ1IItl04Arz22mts3ryZiy66iGeeeQaAjRs3AjB27FheeuklOnXqRLNmzdi5cydXX301f/3rX7Hb7XzwwQdce+215OTk0K5du3P+GU8//TQvvPACL774IlOmTOH2229nx44dREXV750RBaCG5ucPrfq6jgF3u86VHDoVhnatht1rwFEIO75xHSdFtjsRhga6fm3ZB/y1oZaIiNSPiIgIbDYbwcHBtGzZEoBNmzYB8MwzzzB06FB326ioKPr27ev+etKkSXzyySd8/vnn3H///ef8M+68805uu+02AJ599llef/11Vq1axfDhw+ujS24KQI1BcBR0G+Y6AJxOOLAZdq06NVK0LxuO5LqOHz92tfOzu4JU2wGnRorC24A22RIRafSCAvz46ZkU0/5sTyUkJFT6uqioiKeeeoq5c+eyd+9eysvLOXbsGLm5uee9zsUXX+z+fUhICOHh4e7nfdUnBaDGyGqFmB6uo99I17njhbBnLexcfWqk6NihEyFpFXx34r1hraBtwqmRotbxEBBkVk9EROQcLBZLtW5DNVZnruZ65JFHWLhwIS+99BJdunQhKCiIm266idLS0vNeJyAgoNLXFosFp9NZ5/WeyXv/5n1NYDh0SnIdAIYBh7aduHV2YqQo70c4uheyv3AdAFZ/iL3oxCjRQFc4atZRo0QiIlItNpvN/Ryz8/n222+58847ueGGGwDXiNAvv/xSz9XVngKQt7JYoHln19E31XWutAT2ZsHOVadGiYryXef2ZsHqt13tgpufGCFKcI0StekH9jCTOiIiIo1Zhw4dWLlyJb/88guhoaHnHJ3p2rUrs2fP5tprr8VisfDkk082yEhObSkANSW2YGg/2HWAa5SoYNepMLRrNez9AUoOwub5rgMAC8T0OnXrLG4gNO+qzRpFRIRHHnmEUaNG0atXL44dO8a7775bZbtXXnmFu+66i8GDBxMdHc3jjz9OYWFhA1dbfRajupsB+JDCwkIiIiIoKCggPDzc7HLqVrkD8ja4wtDOVa5baAVVTFDTZo0iInXq+PHjbN++nY4dOxIYGGh2OV7rfH+PNfn5rREgX+NvPzHSkwC/utd17mjeGcvw157arHHr4lPvbd71tFtnA1yjRn76JyQiIt5H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Y6R9gERERLyP1+wDJCIiImIGBSARERHxOQpAIiIi4nMUgERERMTnKACJiIiIz1EAEhEREZ+jACQiIiI+RwFIREREfI4CkIiIiPgcBSARERHxOQpAIiIi4nMUgERERMTnKACJiIiIz1EAEhEREZ+jACQiIiI+RwFIREREfI4CkIiIiPgcBSARERHxOQpAIiIi4nMUgERERMTnKACJiIiIz1EAEhEREZ+jACQiIiI+RwFIREREfI4CkIiIiPgcBSARERHxOQpAIiIi4nMUgERERMTnKACJiIiIz1EAEhEREZ+jACQiIiI+RwFIREREfI4CkIiIiPgcBSARERHxOY0iAE2bNo0OHToQGBhIYmIiq1atOmfb2bNnk5CQQGRkJCEhIcTHxzNjxoxztv/Tn/6ExWJh8uTJ9VC5iIiIeCPTA9CsWbNIT09n4sSJrF27lr59+5KSksK+ffuqbB8VFcX48eNZsWIF69evJy0tjbS0NBYsWHBW208++YTvvvuO1q1b13c3RERExIuYHoBeeeUV/vjHP5KWlkavXr148803CQ4O5h//+EeV7ZOSkrjhhhvo2bMnnTt3ZsyYMVx88cV88803ldrt3r2bBx54gH/+858EBAQ0RFdERETES5gagEpLS1mzZg3Jycnuc1arleTkZFasWHHB9xuGQWZmJjk5OVx22WXu806nkzvuuINHH32U3r17X/A6DoeDwsLCSoeIiIg0XaYGoAMHDlBRUUFsbGyl87GxseTl5Z3zfQUFBYSGhmKz2RgxYgRTpkxh6NCh7teff/55/P39efDBB6tVR0ZGBhEREe4jLi6udh0SERERr+BvdgG1ERYWRlZWFkVFRWRmZpKenk6nTp1ISkpizZo1vPbaa6xduxaLxVKt640bN4709HT314WFhQpBIiIiTZipASg6Oho/Pz/y8/Mrnc/Pz6dly5bnfJ/VaqVLly4AxMfHk52dTUZGBklJSXz99dfs27ePdu3audtXVFTw8MMPM3nyZH755Zezrme327Hb7XXTKREREWn0anUL7P3332fu3Lnurx977DEiIyMZPHgwO3bsqPZ1bDYb/fv3JzMz033O6XSSmZnJoEGDqn0dp9OJw+EA4I477mD9+vVkZWW5j9atW/Poo49WuVJMREREfE+tRoCeffZZpk+fDsCKFSuYNm0ar776KnPmzOHPf/4zs2fP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/PBDw263G++9957x008/Gffcc48RGRlp5OXlGYZhGHfccYcxduxYd/tvv/3W8Pf3N1566SUjOzvbmDhxohEQEGBs2LDBrC6cV0379/TTTxsLFiwwtm7daqxZs8a49dZbjcDAQGPjxo1mdeG8jh49aqxbt85Yt26dARivvPKKsW7dOmPHjh2GYRjG2LFjjTvuuMPdftu2bUZwcLDx6KOPGtnZ2ca0adMMPz8/Y/78+WZ14bxq2r9XX33V+PTTT42ff/7Z2LBhgzFmzBjDarUaixYtMqsL53XvvfcaERERxtKlS429e/e6j5KSEncbb/4erE3/vO17cOzYscayZcuM7du3G+vXrzfGjh1rWCwW46uvvjIMw7s/P8Ooef+87fOrypmrwBrLZ6gAVA+mTJlitGvXzrDZbMbAgQON7777zv3a5ZdfbowaNapS+3//+99Gt27dDJvNZvTu3duYO3duA1dcMzXp30MPPeRuGxsba1x99dXG2rVrTai6ek4u+z7zONmnUaNGGZdffvlZ74mPjzdsNpvRqVMn4913323wuqurpv17/vnnjc6dOxuBgYFGVFSUkZSUZCxevNic4quhqr4BlT4Tb/4erE3/vO178K677jLat29v2Gw2o0WLFsaVV17pDgeG4d2fn2HUvH/e9vlV5cwA1Fg+Q4thGEb9jjGJiIiINC6aAyQiIiI+RwFIREREfI4CkIiIiPgcBSARERHxOQpAIiIi4nMUgERERMTnKACJiIiIz1EAEhEREZ+jACQiUg1Lly7FYrFw5MgRs0sRkTqgACQiIiI+RwFIREREfI4CkIh4BafTSUZGBh07diQoKIi+ffvy0UcfAaduT82dO5eLL76YwMBAfvWrX/Hjjz9WusbHH39M7969sdvtdOjQgZdffrnS6w6Hg8cff5y4uDjsdjtdunThnXfeqdRmzZo1JCQkEBwczODBg8nJyanfjotIvVAAEhGvkJGRwQcffMCbb77Jxo0b+fOf/8zvf/97li1b5m7z6KOP8vLLL7N69WpatGjBtddeS1lZGeAKLrfccgu33norGzZs4KmnnuLJJ5/kvffec79/5MiR/Otf/+L1118nOzubt956i9DQ0Ep1jB8/npdffpnvv/8ef39/7rrrrgbpv4jULT0NXkQaPYfDQVRUFIsWLWLQoEHu83fffTclJSXcc889XHHFFXz44YekpqYCcOjQIdq2bct7773HLbfcwu23387+/fv56quv3O9/7LHHmDt3Lhs3bmTz5s10796dhQsXkpycfFYNS5cu5YorrmDRokVceeWVAMybN48RI0Zw7NgxAgMD6/lvQUTqkkaARKTR27JlCyUlJQwdOpTQ0FD38cEHH7B161Z3u9PDUVRUFN27dyc7OxuA7OxshgwZUum6Q4YM4eeff6aiooKsrCz8/Py4/PLLz1vLxRdf7P59q1atANi3b5/HfRSRhuVvdgEiIhdSVFQEwNy5c2nTpk2l1+x2e6UQVFtBQUHVahcQEOD+vcViAVzzk0TEu2gESEQavV69emG328nNzaVLly6Vjri4OHe77777zv37w4cPs3nzZnr27AlAz549+fbbbytd99tvv6Vbt274+fnRp08fnE5npTlFItJ0aQRIRBq9sLAwHnnkEf785z/jdDq59NJLKSgo4NtvvyU8PJz27dsD8Mwzz9C8eXNiY2MZP3480dHRXH/99QA8/PDDDBgwgEmTJpGamsqKFSuYOnUqb7zxBgAdOnRg1KhR3HXXXbz++uv07duXHTt2sG/fPm655Razui4i9UQBSES8wqRJk2jRogUZGRls27aNyMhI+vXrxxNPPOG+BfXcc88xZswYfv75Z+Lj4/niiy+w2WwA9OvXj3//+99MmDCBSZMm0apVK5555hnuvPNO958xffp0nnjiCUaPHs3Bgwdp164dTzzxhBndFZF6plVgIuL1Tq7QOnz4MJGRkWaXIyJeQHOARERExOcoAImIiIjP0S0wERER8TkaARIRERGfowAkIiIiPkcBSERERHyOApCIiIj4HAUgERER8TkKQCIiIuJzFIBERETE5ygAiYiIiM/5/x0w+k0h/OEEAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Training finished!\n"
     ]
    }
   ],
   "source": [
    "dataset = pd.read_csv(\"./revlog_history.tsv\", sep='\\t', index_col=None, dtype={'r_history': str ,'t_history': str} )\n",
    "dataset = dataset[(dataset['i'] > 1) & (dataset['delta_t'] > 0) & (dataset['t_history'].str.count(',0') == 0)]\n",
    "dataset['tensor'] = dataset.progress_apply(lambda x: lineToTensor(list(zip([x['t_history']], [x['r_history']]))[0]), axis=1)\n",
    "dataset['y'] = dataset['r'].map({1: 0, 2: 1, 3: 1, 4: 1})\n",
    "dataset['group'] = dataset['r_history'] + dataset['t_history']\n",
    "print(\"Tensorized!\")\n",
    "\n",
    "from sklearn.model_selection import StratifiedGroupKFold\n",
    "\n",
    "w = []\n",
    "\n",
    "sgkf = StratifiedGroupKFold(n_splits=3)\n",
    "for train_index, test_index in sgkf.split(dataset, dataset['i'], dataset['group']):\n",
    "    print(\"TRAIN:\", len(train_index), \"TEST:\",  len(test_index))\n",
    "    train_set = dataset.iloc[train_index].copy()\n",
    "    test_set = dataset.iloc[test_index].copy()\n",
    "    optimizer = Optimizer(train_set, test_set, n_epoch=3, lr=4e-2, batch_size=256)\n",
    "    w.append(optimizer.train())\n",
    "    optimizer.plot()\n",
    "\n",
    "print(\"\\nTraining finished!\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3 Result\n",
    "\n",
    "Copy the optimal parameters for FSRS for you in the output of next code cell after running."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.3656, 2.3215, 0.0752, 0.5053, 0.4849, 0.0937, 2.683, 0.2018, 1.6642, 0.7659, 0.0784, 0.5833, 1.2738, 1.3637]\n"
     ]
    }
   ],
   "source": [
    "w = np.array(w)\n",
    "avg_w = np.round(np.mean(w, axis=0), 4)\n",
    "print(avg_w.tolist())"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.4 Preview\n",
    "\n",
    "You can see the memory states and intervals generated by FSRS as if you press the good in each review at the due date scheduled by FSRS."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1:again, 2:hard, 3:good, 4:easy\n",
      "\n",
      "first rating: 1\n",
      "rating history: 1,3,3,3,3,3,3,3,3,3,3\n",
      "interval history: 0,1,2,4,8,14,25,44,75,126,206\n",
      "difficulty history: 0,1.0,0.9,0.8,0.8,0.7,0.6,0.6,0.5,0.5,0.4\n",
      "\n",
      "first rating: 2\n",
      "rating history: 2,3,3,3,3,3,3,3,3,3,3\n",
      "interval history: 0,4,9,19,37,71,129,226,383,629,1005\n",
      "difficulty history: 0,0.5,0.5,0.4,0.4,0.3,0.3,0.3,0.3,0.2,0.2\n",
      "\n",
      "first rating: 3\n",
      "rating history: 3,3,3,3,3,3,3,3,3,3,3\n",
      "interval history: 0,6,18,47,108,228,445,815,1415,2347,3743\n",
      "difficulty history: 0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0\n",
      "\n",
      "first rating: 4\n",
      "rating history: 4,3,3,3,3,3,3,3,3,3,3\n",
      "interval history: 0,8,35,118,326,774,1631,3126,5556,9285,14749\n",
      "difficulty history: 0,-0.5,-0.5,-0.4,-0.4,-0.3,-0.3,-0.3,-0.3,-0.2,-0.2\n",
      "\n"
     ]
    }
   ],
   "source": [
    "requestRetention = 0.9  # recommended setting: 0.8 ~ 0.9\n",
    "\n",
    "\n",
    "class Collection:\n",
    "    def __init__(self, w):\n",
    "        self.model = FSRS(w)\n",
    "        self.model.eval()\n",
    "\n",
    "    def predict(self, t_history, r_history):\n",
    "        with torch.no_grad():\n",
    "            line_tensor = lineToTensor(list(zip([t_history], [r_history]))[0]).unsqueeze(1)\n",
    "            output_t = self.model(line_tensor)\n",
    "            return output_t[-1][0]\n",
    "        \n",
    "    def batch_predict(self, dataset):\n",
    "        fast_dataset = RevlogDataset(dataset)\n",
    "        outputs, _ = self.model(fast_dataset.x_train.transpose(0, 1))\n",
    "        stabilities, difficulties = outputs[fast_dataset.seq_len-1, torch.arange(len(fast_dataset))].transpose(0, 1)\n",
    "        return stabilities.tolist(), difficulties.tolist()\n",
    "\n",
    "my_collection = Collection(avg_w)\n",
    "print(\"1:again, 2:hard, 3:good, 4:easy\\n\")\n",
    "for first_rating in (1,2,3,4):\n",
    "    print(f'first rating: {first_rating}')\n",
    "    t_history = \"0\"\n",
    "    d_history = \"0\"\n",
    "    r_history = f\"{first_rating}\"  # the first rating of the new card\n",
    "    # print(\"stability, difficulty, lapses\")\n",
    "    for i in range(10):\n",
    "        states = my_collection.predict(t_history, r_history)\n",
    "        # print('{0:9.2f} {1:11.2f} {2:7.0f}'.format(\n",
    "            # *list(map(lambda x: round(float(x), 4), states))))\n",
    "        next_t = max(round(float(np.log(requestRetention)/np.log(0.9) * states[0])), 1)\n",
    "        difficulty = round(float(states[1]), 1)\n",
    "        t_history += f',{int(next_t)}'\n",
    "        d_history += f',{difficulty}'\n",
    "        r_history += f\",3\"\n",
    "    print(f\"rating history: {r_history}\")\n",
    "    print(f\"interval history: {t_history}\")\n",
    "    print(f\"difficulty history: {d_history}\")\n",
    "    print('')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can change the `test_rating_sequence` to see the scheduling intervals in different ratings."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([6.0086, 0.0000])\n",
      "tensor([17.9079,  0.0000])\n",
      "tensor([46.5510,  0.0000])\n",
      "tensor([108.2357,   0.0000])\n",
      "tensor([227.7461,   0.0000])\n",
      "tensor([19.2631,  0.8789])\n",
      "tensor([4.2767, 1.6755])\n",
      "tensor([5.8643, 1.5185])\n",
      "tensor([8.4050, 1.3762])\n",
      "tensor([11.9540,  1.2473])\n",
      "tensor([17.5274,  1.1304])\n",
      "tensor([26.1620,  1.0245])\n",
      "rating history: 3,3,3,3,3,1,1,3,3,3,3,3\n",
      "interval history: 0,6,18,47,108,228,19,4,6,8,12,18,26\n",
      "difficulty history: 0,0.0,0.0,0.0,0.0,0.0,0.9,1.7,1.5,1.4,1.2,1.1,1.0\n"
     ]
    }
   ],
   "source": [
    "test_rating_sequence = \"3,3,3,3,3,1,1,3,3,3,3,3\"\n",
    "requestRetention = 0.9  # recommended setting: 0.8 ~ 0.9\n",
    "easyBonus = 1.3\n",
    "hardInterval = 1.2\n",
    "\n",
    "t_history = \"0\"\n",
    "d_history = \"0\"\n",
    "for i in range(len(test_rating_sequence.split(','))):\n",
    "    rating = test_rating_sequence[2*i]\n",
    "    last_t = int(t_history.split(',')[-1])\n",
    "    r_history = test_rating_sequence[:2*i+1]\n",
    "    states = my_collection.predict(t_history, r_history)\n",
    "    print(states)\n",
    "    next_t = max(1,round(float(np.log(requestRetention)/np.log(0.9) * states[0])))\n",
    "    if rating == '4':\n",
    "        next_t = round(next_t * easyBonus)\n",
    "    elif rating == '2':\n",
    "        next_t = round(last_t * hardInterval)\n",
    "    t_history += f',{int(next_t)}'\n",
    "    difficulty = round(float(states[1]), 1)\n",
    "    d_history += f',{difficulty}'\n",
    "print(f\"rating history: {test_rating_sequence}\")\n",
    "print(f\"interval history: {t_history}\")\n",
    "print(f\"difficulty history: {d_history}\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.5 Predict memory states and distribution of difficulty\n",
    "\n",
    "Predict memory states for each review group and save them in [./prediction.tsv](./prediction.tsv).\n",
    "\n",
    "Meanwhile, it will count the distribution of difficulty."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "prediction.tsv saved.\n",
      "difficulty\n",
      "-2    0.001515\n",
      "-1    0.102308\n",
      " 0    0.329480\n",
      " 1    0.275904\n",
      " 2    0.208767\n",
      " 3    0.068241\n",
      " 4    0.012659\n",
      " 5    0.001095\n",
      " 6    0.000031\n",
      "Name: count, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "stabilities, difficulties = my_collection.batch_predict(dataset)\n",
    "stabilities = map(lambda x: round(x, 2), stabilities)\n",
    "difficulties = map(lambda x: round(x, 2), difficulties)\n",
    "dataset['stability'] = list(stabilities)\n",
    "dataset['difficulty'] = list(difficulties)\n",
    "prediction = dataset.groupby(by=['t_history', 'r_history']).agg({\"stability\": \"mean\", \"difficulty\": \"mean\", \"id\": \"count\"})\n",
    "prediction.reset_index(inplace=True)\n",
    "prediction.sort_values(by=['r_history'], inplace=True)\n",
    "prediction.rename(columns={\"id\": \"count\"}, inplace=True)\n",
    "prediction.to_csv(\"./prediction.tsv\", sep='\\t', index=None)\n",
    "print(\"prediction.tsv saved.\")\n",
    "prediction['difficulty'] = prediction['difficulty'].map(lambda x: int(round(x)))\n",
    "difficulty_distribution = prediction.groupby(by=['difficulty'])['count'].sum() / prediction['count'].sum()\n",
    "print(difficulty_distribution)\n",
    "d_max = difficulty_distribution.index.max()\n",
    "d_min = difficulty_distribution.index.min()\n",
    "difficulty_distribution_padding = np.zeros(d_max - d_min + 1)\n",
    "difficulty_distribution_padding = difficulty_distribution.values"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3 Optimize retention to minimize the time of reviews\n",
    "\n",
    "Calculate the optimal retention to minimize the time for long-term memory consolidation. It is an experimental feature. You can use the simulator to get more accurate results:\n",
    "\n",
    "https://github.com/open-spaced-repetition/fsrs4anki/blob/main/fsrs4anki_simulator.ipynb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "average time for failed cards: 25.0s\n",
      "average time for recalled cards: 8.0s\n",
      "terminal stability:  100.18\n"
     ]
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a30885062ef24b768315879cf65e11d9",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/15 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "expected_time.csv saved.\n",
      "\n",
      "-----suggested retention (experimental): 0.76-----\n"
     ]
    },
    {
     "data": {
      "image/png": "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ZREdaMKECYwaNSqh2VEIIYTo6Q5oOM7u3bt58803+dOf/sQf/vCHhE30DkuWLOH888+nT58+pKSkMGrUKF599dVOLc8xxxyD1Wpl8ODBvPTSS/t9zZtvvsmoUaNwOBwMGDCAWbNmNTsmFApx//33M2DAAKxWK4WFhbz44osd8AmEEEJ0hKRrdF566SV++ctfYrFYyMzMTOh8qSgKt956a7sWUHRNX331FUceeSR33XUXubm5/Pvf/+bqq68mNTWVc88994DPGw6Hkx7lVlxczDnnnMO0adN49dVXWbRoEddffz19+vRh0qRJLb7mo48+4sorr+SPf/wjEydO5Mcff+SGG27Abrdz8803x4/7xS9+QVVVFS+88AKDBw9mz5493W7ySCGE6M2SDjoPPPAAM2fO5J577ul187NomkYg0jnLKdjNxjaP6PH5fEybNo158+bhcrm4884727089957b8Lj2267jQULFvCvf/0rqaBTWFjIddddx8aNG3n33Xe56KKL2lQb09Szzz5LUVERTz75JADDhg3jiy++4Omnn2416PzjH//gggsuYNq0aQAMHDiQe+65hyeeeILp06ejKAoff/wxX375JZs3byYrKyteXiGEEN1H0kHH7/fz85//vNeFHIBAJMbwmZ90ynuve3gSDkvb/rlmzJjB0qVLefXVVyksLOT+++/nm2++YdSoUfFjpk2bxiuvvLLP83i93qTKWFtby7Bhw5J6DcDvf/97Zs6cya9//ev4vhEjRrBt27ZWX3PyySfz0UcfAbB8+XLOOOOMhOcnTZrE//7v/7b6+lAo1GwSSLvdzs6dO9m2bRuFhYV88MEHHH300cyaNYtXXnmFlJQUzjvvPB555BHpeC+EEN1E0kHnuuuu46233uLuu+/uiPKIg+T1ennhhRd4+eWXOeWUU3C73cydO5f8/PyE4x5++OF2rel58803+frrr/nrX/+a9GtPO+007rjjjoR98+fP3+eke02DRklJCbm5uQnP5+bm4vF4CAQCLYaSSZMm8atf/YprrrmGU089lU2bNsVrhPbs2UNhYSFbtmzhP//5DykpKcybN4+Kigr+53/+h8rKSv7+978n/TmFEEIcekkHnccff5xzzz2Xjz/+mJEjR2I2mxOef+qpp9qtcF2N3Wxk3cMtN4Ucivdui82bNxMOhxk7dmx8X0ZGBkOHDk04Licnh5ycnDads2ntStOalAaLFy/mF7/4BX/7298YMWJEm87Z1JgxY5rtGzBgQNLnScYNN9zA5s2bOffcc4lEIrjdbm677TYefPDBeG2lqqooisIrr7xCeno6oP98X3LJJfz5z3+WWh0hhOgGDijofPLJJ/Evzr07I/dkiqK0ufmoq0um6app7creX+6ff/45U6ZM4emnn+bqq68+oLKkpKQ025dM01VeXh6lpaUJz5eWluJ2u1sNI4qi8MQTT/DYY49RUlJCdnY2ixYtAvT+OqAvzNmnTx9SU1Pjrxs2bBiaprFz504OO+yw5D6oEEKIQy7pb+0nn3ySF198kWuuuaYDiiMO1qBBgzCbzaxYsSLeEbe6upoNGzZwyimnxI9LpumqtdqVJUuWcO655/LEE09w4403Hnzhm0im6WrcuHHMnz8/4fmFCxcybty4/b6P0WikX79+ALz++uuMGzeO7OxsAE444QTefvttvF4vbrcbgA0bNmAwGJo1BQohhOiakg46VquVE088sSPKckjNmTOHOXPmtLhAaXfmdDq57rrruOuuu7Db7RQWFvLAAw806zyeTNNVSxYvXsy5557LbbfdxsUXX0xJSQmgL4CakZFxUJ8Bkmu6mjZtGn/605/4v//7P6699lo+++wz3nzzTT788MP4MX/605+YN29evNamoqKCt99+mwkTJhAMBvn73//OW2+9xeeffx5/zRVXXMEjjzzCtddey8MPP0xFRQUzZszg2muvlWYrIYToJpIeOnXbbbfxxz/+sSPKckj15LWuZs2axUknncTll1/OxIkTOemkkxg9enS7vsfcuXPx+/08/vjj8SaePn36cNFFF8WPWbJkCYqisHXr1nZ9770VFRXx4YcfsnDhQo466iiefPJJnn/++YSh5RUVFWzevLnZZxgzZgwnnngiP/zwA0uWLOG4446LP+90Opk3bx41NTWMGTOGK6+8kilTpsjEmEII0Y0kXaOzcuVKPvvsM/79738zYsSIZp2R//Wvf7Vb4cSBcTqdvPzyy3g8HtxuNwaDgRkzZrTre7z00kv7ne+muLiYwYMHx5uGWtJeIWjChAn897//bfX5Bx98kAcffDD+OCsri+XLl+/3vEOGDGHBggW9cjoFIYToCZIOOmlpaQl/tQvRmvnz5/PYY481C8NCCCHEoZJ00JH5Q0RbvfXW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FCOsaoTDUBPWJzFMtZtJtZsxyYiuVmmaRl1dHS6Xq82dv4PBIHa7nfHjx3e7n5n2FolEWLhwIWeeeWbvmaytnck1PDhy/Q5eV76GTVdi2Jekg05rqe6cc87hu+++S/Z0B+2kk05KqlnJarXG10Rqymw2N/tHjMViKIqCwWA4JLMLtyeLCZxmcLsdqBqcMmECQ4aP5FcPPBof5bWnNojTamoMPdK8laDh56rhZ6AtGhYCbennqbeSa3Hw5BoeHLl+B68rXsO2lueAvtmWLVvG//t//49x48axa9cuQK9FaahlaS9ZWVkYjUZKS0sT9peWlnbKUPbuymQ0YDYaSLWbGdbHTd9UOw6LnnG9oSi7agL8uKeO4gofVb4wsb2C47fffsvll19OQUEBdrudYcOG8cwzz3TGRwH0kX8nn3wyNpuNgoICfve7FibEasFLL73EkUceic1mIycnp9kkh5988gnHH388LpeL7OxsLrnkErZv394RH0EIIcQhknTQeeedd5g0aRJ2u53//ve/8Y69tbW1PPbYY+1aOIvFwujRo1m0aFF8n6qqLFq0iHHjxrXre/UWZqOBLJeVwTlODs9zkZdqw242oqFRF4yws9rPuj11bK3wUeMPE1M1Vq9eTU5ODq+88go//PAD9913H/fccw9/+tOfDqosB9LvyePxMHHiRAYMGMDq1auZNWsWDz74IM8999w+X/fUU09x3333cffdd/PDDz/w6aefMmnSpPjzxcXFnH/++Zx22mmsWbOGTz75hMrKyjb1+xJCCNF1Jd109Zvf/IZnn32Wq6++mn/+85/x/SeeeCK/+c1vki6A1+tl06ZN8cfFxcWsWbOGjIwM+vfvz+23387UqVMZM2YMxx13HLNnz8bn88VHYR2oOXPmMGfOnG6x8GiyfD4f06ZNY968ebhcLu68884Wj7OYjOS4jOS4bAQjMWoDEWr8EULRGJ5gBE8wgkFROOP8y7j48qtwWU0YDAoDBw5k+fLl/Otf/+Lmm29uc7kmTJjAEUccgclk4pVXXmHkyJFJr5326quvEg6HefHFF7FYLIwYMYI1a9bw1FNPceONN7b4murqau6//34++OCDhGkQjjzyyPj9hjmYfvOb38SbqW6//XYuvPBCIpFIi82dQgghur6kg8769esZP358s/2pqanU1NQkXYBVq1Zx6qmnxh83dBSeOnUqL730Epdddhnl5eXMnDmTkpISRo0axccff9ysg3Kypk+fzvTp0+Orn7aFpmlEw500zNzS9tmQZ8yYwdKlS3n11VcpLCzk/vvv55tvvmHUqFHxY6ZNm8Yrr7zS6jk0YPWm3YSjKjWBCDWBCEZFwW03k+owU1NbS0ZGRtKfY+7cudx00018+eWX8X1nn302y5Yta/U1AwYM4IcffgBg+fLljB8/HovFEn9+0qRJPPHEE1RXV5Oe3nzWzoULF6KqKrt27WLYsGHU1dVxwgkn8OSTT8Ynlxw9ejQGg4G///3vXHPNNXi9Xl555RUmTJjQ5dqlhRBCtF3SQScvL49NmzZRWFiYsP+LL76ILwmRjAkTJsTnK2nNzTffnFTNQUeJhlWeu+3zTnnvG585BbN1//OyeL1eXnjhBV5++WVOOeUU3G43c+fOJT8/P+G4hx9+uNWangaDcl0EIjFq/BFq62dgrvaHWbx0GW++8QYv/fMdvMEIKVZTm0PYYYcd1qxPzfPPP08gEGj1NU2DRklJCUVFRQnPN4TekpKSFoPOli1bUFWVxx57jGeeeYbU1FTuv/9+zjzzTNauXYvFYqGoqIgFCxZw6aWX8stf/pJYLMa4ceMO+dptQggh2lfSQeeGG27gtttu48UXX0RRFHbv3s3y5cu58847eeCBBzqijCIJmzdvJhwOM3bs2Pi+jIwMhg4dmnBcTk5OwszSrdFnWjbRJ9WGPxzjP6vX8L/XXckv//cuRo4dz5YKHyajgbT6kVsOi3GfoWf06NHN9vXr1y+JT5g8VVWJRCL84Q9/YOLEiQC8/vrr5OXlsXjxYiZNmkRJSQk33HADU6dO5fLLL6euro6ZM2cyderUhD5iQgghupekg87dd9+Nqqqcfvrp+P1+xo8fj9Vq5c477+SWW27piDJ2GSaLgRufOaXT3rs97a/pCvTaoQaKorBt8wauuPAcpv3yRu6Z+Wtq/RFqgxGiMZUKb4gKbwiL0UCqw0ya3YzN3Dz0tLTYajJNV3l5eS2Owmt4riUNi74OHz48vi87O5usrKz4qKo5c+aQmpqaUNv08ssvM2DAAFasWLHfGbeFEEJ0TUkHHUVRuO+++5gxYwabNm3C6/UyfPhwnE5nR5SvS1EUpU3NR51p0KBBmM1mVqxYER9VVF1dzYYNGzjllMaQ1pamq6Z++OEHTjvtNKZOnRofXeeymemraXiDUWoDevNWOKZSXheivC6E1WTAYTFhMxuwmY1oGi02UybTdDVu3Djuu+8+IpFIfP/ChQsZOnRoi81WoHeUB71/WUMTXlVVFRUVFQwYMADQZ9jce66chiUcOmv5DyGEEAfvgNa6An3od9O/kLubnjrqyul0ct1113HXXXdht9spLCzkgQceaPYl3tamK4Dvv/+e0047jUmTJnH77bdTUlIC6EEgOzsbt92M226mn6oPUa8JRKgLRglFVULRxiHk/nCUKl+YTWXeePixmQzk5PXB3MbJCq+44goeeuih+Gf8/vvveeaZZ3j66afjx8ybN4977rknPq/TkCFDOP/887ntttt47rnncLvd3HPPPRx++OHxjvDnnHMOTz/9NA8//HC86eqee+6hoKCAo48+uk1lE0II0fX02qlwp0+fzrp16/j66687uyjtbtasWZx00klcfvnlTJw4kZNOOqnFvjFt9fbbb1NeXs4rr7xCnz594tuxxx4bP2br1q0YjQb+u/IrBmSmMKyPmwGZKeS6baTazdhMeu2IRmPg2V0TYEuFjx/3eFi328Pmci+7agJUekP4QlGiseY1KampqSxYsIDi4mJGjx7NHXfcwcyZMxOGltfW1rJ+/fqE17388suMHTuWc845h1NOOQWz2czHH38crxU67bTTeO2113j33Xc5+uijOeuss7Barbz99tvY7fYDvnZCCCE6l6Ltb8hTD9cwvLy2trbFta6Ki4spKirqdusWqaqKx+PB7XYfkuUrFi9ezEUXXcSWLVtabUJSNU2v5YnECEZUgpEYoWiMULT1piGz0YDVVF/7YzZiMxuwmowYD8EaXQdyDbvzz0x72lnt582vt/PZfzdy/rhhXDK6P+kplv2/UCSIRCLMnz+fyZMnyzQHB0Cu38HrytdwX9/fTR1w05UQTc2fP59777231ZADYFAU7GYjdnNiPydV1QhG9fATijaGoEhMjW/eUOJK4BajHn6sTZrArCYjBlmktNMEIzE++aGEN1ft4KvNleh/Qhn4fv56Zn2ykTNH5HLZmAJOHJx1SIKqEEKABB3RTmbNmnXArzUYlPph7In7Y6qqh55ojFB9+AlGVKKqSjimbwQbj1fQZ3u2mQ1Y68NPitXU5v4/InmaprFmRw1vrd7JB9/upi7YGEiPL0onI1rB1mga6/bU8eHa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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "base = 1.01\n",
    "index_len = 664\n",
    "index_offset = 200\n",
    "d_offset = 1\n",
    "r_time = 8\n",
    "f_time = 25\n",
    "max_time = 200000\n",
    "\n",
    "type_block = dict()\n",
    "type_count = dict()\n",
    "type_time = dict()\n",
    "last_t = type_sequence[0]\n",
    "type_block[last_t] = 1\n",
    "type_count[last_t] = 1\n",
    "type_time[last_t] = time_sequence[0]\n",
    "for i,t in enumerate(type_sequence[1:]):\n",
    "    type_count[t] = type_count.setdefault(t, 0) + 1\n",
    "    type_time[t] = type_time.setdefault(t, 0) + time_sequence[i]\n",
    "    if t != last_t:\n",
    "        type_block[t] = type_block.setdefault(t, 0) + 1\n",
    "    last_t = t\n",
    "\n",
    "r_time = round(type_time[1]/type_count[1]/1000, 1)\n",
    "\n",
    "if 2 in type_count and 2 in type_block:\n",
    "    f_time = round(type_time[2]/type_block[2]/1000 + r_time, 1)\n",
    "\n",
    "print(f\"average time for failed cards: {f_time}s\")\n",
    "print(f\"average time for recalled cards: {r_time}s\")\n",
    "\n",
    "def stability2index(stability):\n",
    "    return int(round(np.log(stability) / np.log(base)) + index_offset)\n",
    "\n",
    "def init_stability(d):\n",
    "    return max(((d - 0) / -avg_w[3] + 2) * avg_w[1] + avg_w[0], np.power(base, -index_offset))\n",
    "\n",
    "def cal_next_recall_stability(s, r, d, response):\n",
    "    if response == 1:\n",
    "        return s * (1 + np.exp(avg_w[6]) * (np.exp(-avg_w[13] * d) + avg_w[2]) * np.power(s, -avg_w[7]) * (np.exp((1 - r) * avg_w[8]) - 1))\n",
    "    else:\n",
    "        return avg_w[9] * np.exp(-avg_w[10] * d) * np.power(s, avg_w[11]) * np.exp((1 - r) * avg_w[12])\n",
    "\n",
    "\n",
    "stability_list = np.array([np.power(base, i - index_offset) for i in range(index_len)])\n",
    "print(f\"terminal stability: {stability_list.max(): .2f}\")\n",
    "df = pd.DataFrame(columns=[\"retention\", \"difficulty\", \"time\"])\n",
    "\n",
    "for percentage in notebook.tqdm(range(96, 66, -2)):\n",
    "    recall = percentage / 100\n",
    "    time_list = np.zeros((d_max-d_min+1, index_len))\n",
    "    time_list[:,:-1] = max_time\n",
    "    for d in range(d_max, d_min-1, -1):\n",
    "        s0 = init_stability(d)\n",
    "        s0_index = stability2index(s0)\n",
    "        diff = max_time\n",
    "        while diff > 0.1:\n",
    "            s0_time = time_list[d - d_min][s0_index]\n",
    "            for s_index in range(index_len - 2, -1, -1):\n",
    "                stability = stability_list[s_index]\n",
    "                interval = max(1, round(stability * np.log(recall) / np.log(0.9)))\n",
    "                p_recall = np.power(0.9, interval / stability)\n",
    "                recall_s = cal_next_recall_stability(stability, p_recall, d, 1)\n",
    "                forget_d = min(d + d_offset, d_max)\n",
    "                forget_s = cal_next_recall_stability(stability, p_recall, forget_d, 0)\n",
    "                recall_s_index = min(stability2index(recall_s), index_len - 1)\n",
    "                recall_s_index = max(recall_s_index, s_index + 1)\n",
    "                forget_s_index = min(max(stability2index(forget_s), 0), index_len - 1)\n",
    "                recall_time = time_list[d - d_min][recall_s_index] + r_time\n",
    "                forget_time = time_list[forget_d - d_min][forget_s_index] + f_time\n",
    "                exp_time = p_recall * recall_time + (1.0 - p_recall) * forget_time\n",
    "                if exp_time < time_list[d - d_min][s_index]:\n",
    "                    time_list[d - d_min][s_index] = exp_time\n",
    "            diff = s0_time - time_list[d - d_min][s0_index]\n",
    "        df.loc[0 if pd.isnull(df.index.max()) else df.index.max() + 1] = [recall, d, s0_time]\n",
    "\n",
    "df.sort_values(by=[\"difficulty\", \"retention\"], inplace=True)\n",
    "df.to_csv(\"./expected_time.csv\", index=False)\n",
    "print(\"expected_time.csv saved.\")\n",
    "\n",
    "optimal_retention_list = np.zeros(d_max-d_min+1)\n",
    "for d in range(d_min, d_max+1):\n",
    "    retention = df[df[\"difficulty\"] == d][\"retention\"]\n",
    "    time = df[df[\"difficulty\"] == d][\"time\"]\n",
    "    optimal_retention = retention.iat[time.argmin()]\n",
    "    optimal_retention_list[d-d_min] = optimal_retention\n",
    "    plt.plot(retention, time, label=f\"d={d}, r={optimal_retention}\")\n",
    "print(f\"\\n-----suggested retention (experimental): {np.inner(difficulty_distribution_padding, optimal_retention_list):.2f}-----\")\n",
    "plt.ylabel(\"expected time (second)\")\n",
    "plt.xlabel(\"retention\")\n",
    "plt.legend()\n",
    "plt.grid()\n",
    "plt.semilogy()\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4 Evaluate the model"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.1 Loss\n",
    "\n",
    "Evaluate the model with the log loss. It will compare the log loss between initial model and trained model.\n",
    "\n",
    "And it will predict the stability, difficulty and retrievability for each revlog in [./evaluation.tsv](./evaluation.tsv)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loss before training: 0.3464\n",
      "Loss after training: 0.3146\n"
     ]
    }
   ],
   "source": [
    "my_collection = Collection(init_w)\n",
    "stabilities, difficulties = my_collection.batch_predict(dataset)\n",
    "dataset['stability'] = stabilities\n",
    "dataset['difficulty'] = difficulties\n",
    "dataset['p'] = np.exp(np.log(0.9) * dataset['delta_t'] / dataset['stability'])\n",
    "dataset['log_loss'] = dataset.apply(lambda row: - np.log(row['p']) if row['y'] == 1 else - np.log(1 - row['p']), axis=1)\n",
    "print(f\"Loss before training: {dataset['log_loss'].mean():.4f}\")\n",
    "\n",
    "my_collection = Collection(avg_w)\n",
    "stabilities, difficulties = my_collection.batch_predict(dataset)\n",
    "dataset['stability'] = stabilities\n",
    "dataset['difficulty'] = difficulties\n",
    "dataset['p'] = np.exp(np.log(0.9) * dataset['delta_t'] / dataset['stability'])\n",
    "dataset['log_loss'] = dataset.apply(lambda row: - np.log(row['p']) if row['y'] == 1 else - np.log(1 - row['p']), axis=1)\n",
    "print(f\"Loss after training: {dataset['log_loss'].mean():.4f}\")\n",
    "\n",
    "tmp = dataset.copy()\n",
    "tmp['stability'] = tmp['stability'].map(lambda x: round(x, 2))\n",
    "tmp['difficulty'] = tmp['difficulty'].map(lambda x: round(x, 2))\n",
    "tmp['p'] = tmp['p'].map(lambda x: round(x, 2))\n",
    "tmp['log_loss'] = tmp['log_loss'].map(lambda x: round(x, 2))\n",
    "tmp.rename(columns={\"r\": \"grade\", \"p\": \"retrievability\"}, inplace=True)\n",
    "tmp[['id', 'cid', 'review_date', 'r_history', 't_history', 'delta_t', 'grade', 'stability', 'difficulty', 'retrievability', 'log_loss']].to_csv(\"./evaluation.tsv\", sep='\\t', index=False)\n",
    "del tmp"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.2 Calibration graph\n",
    "\n",
    "1. FSRS predicts the stability and retention for each review.\n",
    "2. Reviews are grouped into 40 bins according to their predicted retention.\n",
    "3. Count the true retention of each bin.\n",
    "4. Plot (predicted retention, true retention) in the line graph.\n",
    "5. Plot (predicted retention, size of bin) in the bar graph.\n",
    "6. Combine these graphs to create the calibration graph.\n",
    "\n",
    "Ideally, the blue line should be aligned with the orange one. If the blue line is higher than the orange line, the FSRS underestimates the retention. When the size of reviews within a bin is small, actual retention may deviate largely, which is normal.\n",
    "\n",
    "R-squared (aka the coefficient of determination), is the proportion of the variation in the dependent variable that is predictable from the independent variable(s). The higher the R-squared, the better the model fits your data. For details, please see https://en.wikipedia.org/wiki/Coefficient_of_determination\n",
    "\n",
    "RMSE (root mean squared error) is the square root of the average of squared differences between prediction and actual observation. The lower the RMSE, the better the model fits your data. For details, please see https://en.wikipedia.org/wiki/Root-mean-square_deviation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R-squared: 0.9322\n",
      "RMSE: 0.0169\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error, r2_score\n",
    "\n",
    "\n",
    "# code from https://github.com/papousek/duolingo-halflife-regression/blob/master/evaluation.py\n",
    "def load_brier(predictions, real, bins=20):\n",
    "    counts = np.zeros(bins)\n",
    "    correct = np.zeros(bins)\n",
    "    prediction = np.zeros(bins)\n",
    "    for p, r in zip(predictions, real):\n",
    "        bin = min(int(p * bins), bins - 1)\n",
    "        counts[bin] += 1\n",
    "        correct[bin] += r\n",
    "        prediction[bin] += p\n",
    "    np.seterr(invalid='ignore')\n",
    "    prediction_means = prediction / counts\n",
    "    prediction_means[np.isnan(prediction_means)] = ((np.arange(bins) + 0.5) / bins)[np.isnan(prediction_means)]\n",
    "    correct_means = correct / counts\n",
    "    correct_means[np.isnan(correct_means)] = 0\n",
    "    size = len(predictions)\n",
    "    answer_mean = sum(correct) / size\n",
    "    return {\n",
    "        \"reliability\": sum(counts * (correct_means - prediction_means) ** 2) / size,\n",
    "        \"resolution\": sum(counts * (correct_means - answer_mean) ** 2) / size,\n",
    "        \"uncertainty\": answer_mean * (1 - answer_mean),\n",
    "        \"detail\": {\n",
    "            \"bin_count\": bins,\n",
    "            \"bin_counts\": list(counts),\n",
    "            \"bin_prediction_means\": list(prediction_means),\n",
    "            \"bin_correct_means\": list(correct_means),\n",
    "        }\n",
    "    }\n",
    "\n",
    "\n",
    "def plot_brier(predictions, real, bins=20):\n",
    "    brier = load_brier(predictions, real, bins=bins)\n",
    "    bin_prediction_means = brier['detail']['bin_prediction_means']\n",
    "    bin_correct_means = brier['detail']['bin_correct_means']\n",
    "    bin_counts = brier['detail']['bin_counts']\n",
    "    r2 = r2_score(bin_correct_means, bin_prediction_means, sample_weight=bin_counts)\n",
    "    rmse = np.sqrt(mean_squared_error(bin_correct_means, bin_prediction_means, sample_weight=bin_counts))\n",
    "    print(f\"R-squared: {r2:.4f}\")\n",
    "    print(f\"RMSE: {rmse:.4f}\")\n",
    "    plt.figure()\n",
    "    ax = plt.gca()\n",
    "    ax.set_xlim([0, 1])\n",
    "    ax.set_ylim([0, 1])\n",
    "    plt.grid(True)\n",
    "    plt.plot(bin_prediction_means, bin_correct_means, label='Actual Calibration')\n",
    "    plt.plot((0, 1), (0, 1), label='Perfect Calibration')\n",
    "    bin_count = brier['detail']['bin_count']\n",
    "    counts = np.array(bin_counts)\n",
    "    bins = (np.arange(bin_count) + 0.5) / bin_count\n",
    "    plt.legend(loc='upper center')\n",
    "    plt.xlabel('Predicted R')\n",
    "    plt.ylabel('Actual R')\n",
    "    plt.twinx()\n",
    "    plt.ylabel('Number of reviews')\n",
    "    plt.bar(bins, counts, width=(0.8 / bin_count), ec='k', lw=.2, alpha=0.5, label='Number of reviews')\n",
    "    plt.legend(loc='lower center')\n",
    "\n",
    "\n",
    "plot_brier(dataset['p'], dataset['y'], bins=40)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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6d7e3kRHR1sEkrbcP3HXrl3mr/V6Pfv37zcP4bZo0YKjR49Sq1Yt6tata/GwJnB0c3MjICCAf/75xyL9n3/+oVGjRlbXeffu3bnaUK9evQKD+BYtWnDs2LFc7ahbty729vYEBQWZ25/t5MmTBR7A0KxZMyIiIoiLi8vzur29/R2P6mvYsCGHDh2yWODzzz//mKclFJZOp6Nbt27MnDmTw4cPc+7cOTZv3lzo14u7I9FHOSYbjQshbpeekkxqckIej8Sbj7yuFS1fekryXde3adOmDBgwgDlz5likd+rUidjYWGbOnMmZM2eYN28ef/75513fL9u8efP45ZdfOHHiBKNGjSI+Pp6hQ4cCpmPt4uLiePrpp9m7dy9nzpxh/fr1DBkyxOpzjCdOnMiMGTP44YcfOHnyJG+88QYRERGMGTPG6jpHRUUxfvx4Tp48yffff8/nn39+x3Jef/11du7cyejRo4mIiODUqVP8+uuv5gUsDRo0oEePHrzwwgvs3r2b/fv38/zzzxfY2/j000/j5+dHnz59+Oeffzh79iyrVq0y/yFQq1YtIiMjiYiI4Nq1a2RkZOQqY8CAATg6OjJo0CCOHDnCli1bePnllxk4cKB5PuSdrFmzhjlz5hAREcH58+dZunQpRqPRqiBU3B0Zzi7HzBuNS09knoxGo+mowjuQ4wxFReHu4cGIbk3zvFbYE2uszedug2HDadOm8cMPP1ikNWzYkC+++IIPPviA9957j379+vHqq6+yYMGCu74fmHpAP/roIyIiIqhbty6//fYbXl5eAObew9dff53u3buTkZFBzZo16dGjh9Wn87zyyiskJiYyYcIErl69SqNGjfjtt9+oV6+e1XV+7rnnSEtL4/7770er1TJmzBjzNj75adasGdu2bePtt9+mQ4cOqKpKnTp1LFZML1q0iOeff54HHngAX19fpk+fzqRJk/It097eng0bNjBhwgR69uyJXq+nUaNG5tNZ+vXrx88//0znzp1JSEiwOA4wm7OzM+vXr2fMmDHcd999ODs7069fP2bNmlXo74eHhwc///wzU6dOJT09nXr16vH999/TuHHjQpch7o6i3ovHAxSDixcvUr16dS5cuEC1atVK5J47T1/jmW92U8+nEhvHP1Ai9ywL4uLi+GLL6TueMBN76TyZmZl4VPEuMF/2cYZVfApeGRl76Twa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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.ticker as ticker\n",
    "\n",
    "def to_percent(temp, position):\n",
    "    return '%1.0f' % (100 * temp) + '%'\n",
    "\n",
    "fig = plt.figure(1)\n",
    "ax1 = fig.add_subplot(111)\n",
    "ax2 = ax1.twinx()\n",
    "lns = []\n",
    "\n",
    "stability_calibration = pd.DataFrame(columns=['stability', 'predicted_retention', 'actual_retention'])\n",
    "stability_calibration = dataset[['stability', 'p', 'y']].copy()\n",
    "stability_calibration['bin'] = stability_calibration['stability'].map(lambda x: math.pow(1.2, math.floor(math.log(x, 1.2))))\n",
    "stability_group = stability_calibration.groupby('bin').count()\n",
    "\n",
    "lns1 = ax1.bar(x=stability_group.index, height=stability_group['y'], width=stability_group.index / 5.5,\n",
    "                ec='k', lw=.2, label='Number of predictions', alpha=0.5)\n",
    "ax1.set_ylabel(\"Number of predictions\")\n",
    "ax1.set_xlabel(\"Stability (days)\")\n",
    "ax1.semilogx()\n",
    "lns.append(lns1)\n",
    "\n",
    "stability_group = stability_calibration.groupby(by='bin').agg('mean')\n",
    "lns2 = ax2.plot(stability_group['y'], label='Actual retention')\n",
    "lns3 = ax2.plot(stability_group['p'], label='Predicted retention')\n",
    "ax2.set_ylabel(\"Retention\")\n",
    "ax2.set_ylim(0, 1)\n",
    "lns.append(lns2[0])\n",
    "lns.append(lns3[0])\n",
    "\n",
    "labs = [l.get_label() for l in lns]\n",
    "ax2.legend(lns, labs, loc='lower right')\n",
    "plt.grid(linestyle='--')\n",
    "plt.gca().yaxis.set_major_formatter(ticker.FuncFormatter(to_percent))\n",
    "plt.gca().xaxis.set_major_formatter(ticker.FormatStrFormatter('%d'))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style type=\"text/css\">\n",
       "#T_293cc_row0_col0, #T_293cc_row0_col1, #T_293cc_row0_col2, #T_293cc_row0_col5, #T_293cc_row1_col0, #T_293cc_row1_col1, #T_293cc_row2_col0, #T_293cc_row2_col1, #T_293cc_row2_col5, #T_293cc_row3_col0, #T_293cc_row3_col1, #T_293cc_row3_col5, #T_293cc_row4_col0, #T_293cc_row4_col1, #T_293cc_row4_col5, #T_293cc_row5_col0, #T_293cc_row5_col5, #T_293cc_row6_col0, #T_293cc_row6_col5, #T_293cc_row7_col4, #T_293cc_row7_col5, #T_293cc_row8_col0, #T_293cc_row8_col4, #T_293cc_row8_col5, #T_293cc_row9_col0, #T_293cc_row9_col4, #T_293cc_row9_col5, #T_293cc_row10_col4, #T_293cc_row10_col5, #T_293cc_row11_col4, #T_293cc_row11_col5, #T_293cc_row12_col0, #T_293cc_row12_col3, #T_293cc_row12_col4, #T_293cc_row12_col5, #T_293cc_row13_col3, #T_293cc_row13_col4, #T_293cc_row13_col5, #T_293cc_row14_col3, #T_293cc_row14_col4, #T_293cc_row14_col5, #T_293cc_row15_col2, #T_293cc_row15_col3, #T_293cc_row15_col4, #T_293cc_row15_col5, #T_293cc_row16_col2, #T_293cc_row16_col3, #T_293cc_row16_col4, #T_293cc_row16_col5, #T_293cc_row17_col2, #T_293cc_row17_col3, #T_293cc_row17_col4, #T_293cc_row17_col5, #T_293cc_row18_col2, #T_293cc_row18_col3, #T_293cc_row18_col4, #T_293cc_row18_col5 {\n",
       "  background-color: #000000;\n",
       "  color: #f1f1f1;\n",
       "}\n",
       "#T_293cc_row0_col3 {\n",
       "  background-color: #ff1111;\n",
       "  color: #f1f1f1;\n",
       "}\n",
       "#T_293cc_row0_col4 {\n",
       "  background-color: #ff7575;\n",
       "  color: #f1f1f1;\n",
       "}\n",
       "#T_293cc_row1_col2 {\n",
       "  background-color: #ff5959;\n",
       "  color: #f1f1f1;\n",
       "}\n",
       "#T_293cc_row1_col3, #T_293cc_row5_col4 {\n",
       "  background-color: #ff9595;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row1_col4 {\n",
       "  background-color: #e9e9ff;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row1_col5 {\n",
       "  background-color: #ffa1a1;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row2_col2 {\n",
       "  background-color: #ff2d2d;\n",
       "  color: #f1f1f1;\n",
       "}\n",
       "#T_293cc_row2_col3, #T_293cc_row18_col0 {\n",
       "  background-color: #c5c5ff;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row2_col4, #T_293cc_row5_col1, #T_293cc_row14_col2, #T_293cc_row15_col1, #T_293cc_row16_col1, #T_293cc_row18_col1 {\n",
       "  background-color: #f5f5ff;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row3_col2, #T_293cc_row3_col4, #T_293cc_row5_col3, #T_293cc_row12_col2 {\n",
       "  background-color: #fdfdff;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row3_col3, #T_293cc_row7_col0, #T_293cc_row11_col0 {\n",
       "  background-color: #d9d9ff;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row4_col2, #T_293cc_row8_col2, #T_293cc_row12_col1 {\n",
       "  background-color: #fffdfd;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row4_col3, #T_293cc_row5_col2, #T_293cc_row6_col2 {\n",
       "  background-color: #d1d1ff;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row4_col4, #T_293cc_row7_col3, #T_293cc_row9_col3, #T_293cc_row13_col2 {\n",
       "  background-color: #ffe9e9;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row6_col1, #T_293cc_row6_col3, #T_293cc_row11_col2, #T_293cc_row14_col1 {\n",
       "  background-color: #fff1f1;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row6_col4 {\n",
       "  background-color: #ff9d9d;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row7_col1, #T_293cc_row8_col1, #T_293cc_row10_col1 {\n",
       "  background-color: #e5e5ff;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row7_col2, #T_293cc_row9_col1 {\n",
       "  background-color: #f1f1ff;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row8_col3 {\n",
       "  background-color: #ffcdcd;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row9_col2, #T_293cc_row10_col2, #T_293cc_row16_col0 {\n",
       "  background-color: #ffe5e5;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row10_col0 {\n",
       "  background-color: #ededff;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row10_col3, #T_293cc_row11_col1 {\n",
       "  background-color: #fff9f9;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row11_col3 {\n",
       "  background-color: #ffe1e1;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row13_col0, #T_293cc_row17_col1 {\n",
       "  background-color: #f9f9ff;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row13_col1, #T_293cc_row17_col0 {\n",
       "  background-color: #fff5f5;\n",
       "  color: #000000;\n",
       "}\n",
       "#T_293cc_row14_col0, #T_293cc_row15_col0 {\n",
       "  background-color: #ffeded;\n",
       "  color: #000000;\n",
       "}\n",
       "</style>\n",
       "<table id=\"T_293cc_\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th class=\"index_name level0\" >d_bin</th>\n",
       "      <th class=\"col_heading level0 col0\" >-1</th>\n",
       "      <th class=\"col_heading level0 col1\" >0</th>\n",
       "      <th class=\"col_heading level0 col2\" >1</th>\n",
       "      <th class=\"col_heading level0 col3\" >2</th>\n",
       "      <th class=\"col_heading level0 col4\" >3</th>\n",
       "      <th class=\"col_heading level0 col5\" >4</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th class=\"index_name level0\" >s_bin</th>\n",
       "      <th class=\"blank col0\" >&nbsp;</th>\n",
       "      <th class=\"blank col1\" >&nbsp;</th>\n",
       "      <th class=\"blank col2\" >&nbsp;</th>\n",
       "      <th class=\"blank col3\" >&nbsp;</th>\n",
       "      <th class=\"blank col4\" >&nbsp;</th>\n",
       "      <th class=\"blank col5\" >&nbsp;</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row0\" class=\"row_heading level0 row0\" >0.71</th>\n",
       "      <td id=\"T_293cc_row0_col0\" class=\"data row0 col0\" ></td>\n",
       "      <td id=\"T_293cc_row0_col1\" class=\"data row0 col1\" ></td>\n",
       "      <td id=\"T_293cc_row0_col2\" class=\"data row0 col2\" ></td>\n",
       "      <td id=\"T_293cc_row0_col3\" class=\"data row0 col3\" >9.23%</td>\n",
       "      <td id=\"T_293cc_row0_col4\" class=\"data row0 col4\" >5.36%</td>\n",
       "      <td id=\"T_293cc_row0_col5\" class=\"data row0 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row1\" class=\"row_heading level0 row1\" >1.0</th>\n",
       "      <td id=\"T_293cc_row1_col0\" class=\"data row1 col0\" ></td>\n",
       "      <td id=\"T_293cc_row1_col1\" class=\"data row1 col1\" ></td>\n",
       "      <td id=\"T_293cc_row1_col2\" class=\"data row1 col2\" >6.49%</td>\n",
       "      <td id=\"T_293cc_row1_col3\" class=\"data row1 col3\" >4.08%</td>\n",
       "      <td id=\"T_293cc_row1_col4\" class=\"data row1 col4\" >-0.79%</td>\n",
       "      <td id=\"T_293cc_row1_col5\" class=\"data row1 col5\" >3.63%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row2\" class=\"row_heading level0 row2\" >1.4</th>\n",
       "      <td id=\"T_293cc_row2_col0\" class=\"data row2 col0\" ></td>\n",
       "      <td id=\"T_293cc_row2_col1\" class=\"data row2 col1\" ></td>\n",
       "      <td id=\"T_293cc_row2_col2\" class=\"data row2 col2\" >8.25%</td>\n",
       "      <td id=\"T_293cc_row2_col3\" class=\"data row2 col3\" >-2.20%</td>\n",
       "      <td id=\"T_293cc_row2_col4\" class=\"data row2 col4\" >-0.34%</td>\n",
       "      <td id=\"T_293cc_row2_col5\" class=\"data row2 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row3\" class=\"row_heading level0 row3\" >1.96</th>\n",
       "      <td id=\"T_293cc_row3_col0\" class=\"data row3 col0\" ></td>\n",
       "      <td id=\"T_293cc_row3_col1\" class=\"data row3 col1\" ></td>\n",
       "      <td id=\"T_293cc_row3_col2\" class=\"data row3 col2\" >-0.03%</td>\n",
       "      <td id=\"T_293cc_row3_col3\" class=\"data row3 col3\" >-1.55%</td>\n",
       "      <td id=\"T_293cc_row3_col4\" class=\"data row3 col4\" >-0.10%</td>\n",
       "      <td id=\"T_293cc_row3_col5\" class=\"data row3 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row4\" class=\"row_heading level0 row4\" >2.74</th>\n",
       "      <td id=\"T_293cc_row4_col0\" class=\"data row4 col0\" ></td>\n",
       "      <td id=\"T_293cc_row4_col1\" class=\"data row4 col1\" ></td>\n",
       "      <td id=\"T_293cc_row4_col2\" class=\"data row4 col2\" >0.03%</td>\n",
       "      <td id=\"T_293cc_row4_col3\" class=\"data row4 col3\" >-1.80%</td>\n",
       "      <td id=\"T_293cc_row4_col4\" class=\"data row4 col4\" >0.85%</td>\n",
       "      <td id=\"T_293cc_row4_col5\" class=\"data row4 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row5\" class=\"row_heading level0 row5\" >3.84</th>\n",
       "      <td id=\"T_293cc_row5_col0\" class=\"data row5 col0\" ></td>\n",
       "      <td id=\"T_293cc_row5_col1\" class=\"data row5 col1\" >-0.40%</td>\n",
       "      <td id=\"T_293cc_row5_col2\" class=\"data row5 col2\" >-1.76%</td>\n",
       "      <td id=\"T_293cc_row5_col3\" class=\"data row5 col3\" >-0.06%</td>\n",
       "      <td id=\"T_293cc_row5_col4\" class=\"data row5 col4\" >4.20%</td>\n",
       "      <td id=\"T_293cc_row5_col5\" class=\"data row5 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row6\" class=\"row_heading level0 row6\" >5.38</th>\n",
       "      <td id=\"T_293cc_row6_col0\" class=\"data row6 col0\" ></td>\n",
       "      <td id=\"T_293cc_row6_col1\" class=\"data row6 col1\" >0.56%</td>\n",
       "      <td id=\"T_293cc_row6_col2\" class=\"data row6 col2\" >-1.73%</td>\n",
       "      <td id=\"T_293cc_row6_col3\" class=\"data row6 col3\" >0.54%</td>\n",
       "      <td id=\"T_293cc_row6_col4\" class=\"data row6 col4\" >3.75%</td>\n",
       "      <td id=\"T_293cc_row6_col5\" class=\"data row6 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row7\" class=\"row_heading level0 row7\" >7.53</th>\n",
       "      <td id=\"T_293cc_row7_col0\" class=\"data row7 col0\" >-1.44%</td>\n",
       "      <td id=\"T_293cc_row7_col1\" class=\"data row7 col1\" >-1.08%</td>\n",
       "      <td id=\"T_293cc_row7_col2\" class=\"data row7 col2\" >-0.61%</td>\n",
       "      <td id=\"T_293cc_row7_col3\" class=\"data row7 col3\" >0.82%</td>\n",
       "      <td id=\"T_293cc_row7_col4\" class=\"data row7 col4\" ></td>\n",
       "      <td id=\"T_293cc_row7_col5\" class=\"data row7 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row8\" class=\"row_heading level0 row8\" >10.54</th>\n",
       "      <td id=\"T_293cc_row8_col0\" class=\"data row8 col0\" ></td>\n",
       "      <td id=\"T_293cc_row8_col1\" class=\"data row8 col1\" >-1.09%</td>\n",
       "      <td id=\"T_293cc_row8_col2\" class=\"data row8 col2\" >0.03%</td>\n",
       "      <td id=\"T_293cc_row8_col3\" class=\"data row8 col3\" >1.93%</td>\n",
       "      <td id=\"T_293cc_row8_col4\" class=\"data row8 col4\" ></td>\n",
       "      <td id=\"T_293cc_row8_col5\" class=\"data row8 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row9\" class=\"row_heading level0 row9\" >14.76</th>\n",
       "      <td id=\"T_293cc_row9_col0\" class=\"data row9 col0\" ></td>\n",
       "      <td id=\"T_293cc_row9_col1\" class=\"data row9 col1\" >-0.61%</td>\n",
       "      <td id=\"T_293cc_row9_col2\" class=\"data row9 col2\" >1.08%</td>\n",
       "      <td id=\"T_293cc_row9_col3\" class=\"data row9 col3\" >0.90%</td>\n",
       "      <td id=\"T_293cc_row9_col4\" class=\"data row9 col4\" ></td>\n",
       "      <td id=\"T_293cc_row9_col5\" class=\"data row9 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row10\" class=\"row_heading level0 row10\" >20.66</th>\n",
       "      <td id=\"T_293cc_row10_col0\" class=\"data row10 col0\" >-0.77%</td>\n",
       "      <td id=\"T_293cc_row10_col1\" class=\"data row10 col1\" >-0.95%</td>\n",
       "      <td id=\"T_293cc_row10_col2\" class=\"data row10 col2\" >1.08%</td>\n",
       "      <td id=\"T_293cc_row10_col3\" class=\"data row10 col3\" >0.20%</td>\n",
       "      <td id=\"T_293cc_row10_col4\" class=\"data row10 col4\" ></td>\n",
       "      <td id=\"T_293cc_row10_col5\" class=\"data row10 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row11\" class=\"row_heading level0 row11\" >28.93</th>\n",
       "      <td id=\"T_293cc_row11_col0\" class=\"data row11 col0\" >-1.47%</td>\n",
       "      <td id=\"T_293cc_row11_col1\" class=\"data row11 col1\" >0.20%</td>\n",
       "      <td id=\"T_293cc_row11_col2\" class=\"data row11 col2\" >0.53%</td>\n",
       "      <td id=\"T_293cc_row11_col3\" class=\"data row11 col3\" >1.17%</td>\n",
       "      <td id=\"T_293cc_row11_col4\" class=\"data row11 col4\" ></td>\n",
       "      <td id=\"T_293cc_row11_col5\" class=\"data row11 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row12\" class=\"row_heading level0 row12\" >40.5</th>\n",
       "      <td id=\"T_293cc_row12_col0\" class=\"data row12 col0\" ></td>\n",
       "      <td id=\"T_293cc_row12_col1\" class=\"data row12 col1\" >0.11%</td>\n",
       "      <td id=\"T_293cc_row12_col2\" class=\"data row12 col2\" >-0.13%</td>\n",
       "      <td id=\"T_293cc_row12_col3\" class=\"data row12 col3\" ></td>\n",
       "      <td id=\"T_293cc_row12_col4\" class=\"data row12 col4\" ></td>\n",
       "      <td id=\"T_293cc_row12_col5\" class=\"data row12 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row13\" class=\"row_heading level0 row13\" >56.69</th>\n",
       "      <td id=\"T_293cc_row13_col0\" class=\"data row13 col0\" >-0.19%</td>\n",
       "      <td id=\"T_293cc_row13_col1\" class=\"data row13 col1\" >0.38%</td>\n",
       "      <td id=\"T_293cc_row13_col2\" class=\"data row13 col2\" >0.82%</td>\n",
       "      <td id=\"T_293cc_row13_col3\" class=\"data row13 col3\" ></td>\n",
       "      <td id=\"T_293cc_row13_col4\" class=\"data row13 col4\" ></td>\n",
       "      <td id=\"T_293cc_row13_col5\" class=\"data row13 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row14\" class=\"row_heading level0 row14\" >79.37</th>\n",
       "      <td id=\"T_293cc_row14_col0\" class=\"data row14 col0\" >0.74%</td>\n",
       "      <td id=\"T_293cc_row14_col1\" class=\"data row14 col1\" >0.53%</td>\n",
       "      <td id=\"T_293cc_row14_col2\" class=\"data row14 col2\" >-0.42%</td>\n",
       "      <td id=\"T_293cc_row14_col3\" class=\"data row14 col3\" ></td>\n",
       "      <td id=\"T_293cc_row14_col4\" class=\"data row14 col4\" ></td>\n",
       "      <td id=\"T_293cc_row14_col5\" class=\"data row14 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row15\" class=\"row_heading level0 row15\" >111.12</th>\n",
       "      <td id=\"T_293cc_row15_col0\" class=\"data row15 col0\" >0.64%</td>\n",
       "      <td id=\"T_293cc_row15_col1\" class=\"data row15 col1\" >-0.46%</td>\n",
       "      <td id=\"T_293cc_row15_col2\" class=\"data row15 col2\" ></td>\n",
       "      <td id=\"T_293cc_row15_col3\" class=\"data row15 col3\" ></td>\n",
       "      <td id=\"T_293cc_row15_col4\" class=\"data row15 col4\" ></td>\n",
       "      <td id=\"T_293cc_row15_col5\" class=\"data row15 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row16\" class=\"row_heading level0 row16\" >155.57</th>\n",
       "      <td id=\"T_293cc_row16_col0\" class=\"data row16 col0\" >1.01%</td>\n",
       "      <td id=\"T_293cc_row16_col1\" class=\"data row16 col1\" >-0.38%</td>\n",
       "      <td id=\"T_293cc_row16_col2\" class=\"data row16 col2\" ></td>\n",
       "      <td id=\"T_293cc_row16_col3\" class=\"data row16 col3\" ></td>\n",
       "      <td id=\"T_293cc_row16_col4\" class=\"data row16 col4\" ></td>\n",
       "      <td id=\"T_293cc_row16_col5\" class=\"data row16 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row17\" class=\"row_heading level0 row17\" >217.8</th>\n",
       "      <td id=\"T_293cc_row17_col0\" class=\"data row17 col0\" >0.39%</td>\n",
       "      <td id=\"T_293cc_row17_col1\" class=\"data row17 col1\" >-0.24%</td>\n",
       "      <td id=\"T_293cc_row17_col2\" class=\"data row17 col2\" ></td>\n",
       "      <td id=\"T_293cc_row17_col3\" class=\"data row17 col3\" ></td>\n",
       "      <td id=\"T_293cc_row17_col4\" class=\"data row17 col4\" ></td>\n",
       "      <td id=\"T_293cc_row17_col5\" class=\"data row17 col5\" ></td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_293cc_level0_row18\" class=\"row_heading level0 row18\" >304.91</th>\n",
       "      <td id=\"T_293cc_row18_col0\" class=\"data row18 col0\" >-2.25%</td>\n",
       "      <td id=\"T_293cc_row18_col1\" class=\"data row18 col1\" >-0.37%</td>\n",
       "      <td id=\"T_293cc_row18_col2\" class=\"data row18 col2\" ></td>\n",
       "      <td id=\"T_293cc_row18_col3\" class=\"data row18 col3\" ></td>\n",
       "      <td id=\"T_293cc_row18_col4\" class=\"data row18 col4\" ></td>\n",
       "      <td id=\"T_293cc_row18_col5\" class=\"data row18 col5\" ></td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x295c273a0>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "B_W_Metric_raw = dataset[['difficulty', 'stability', 'p', 'y']].copy()\n",
    "B_W_Metric_raw['s_bin'] = B_W_Metric_raw['stability'].map(lambda x: round(math.pow(1.4, math.floor(math.log(x, 1.4))), 2))\n",
    "B_W_Metric_raw['d_bin'] = B_W_Metric_raw['difficulty'].map(lambda x: int(round(x)))\n",
    "B_W_Metric = B_W_Metric_raw.groupby(by=['s_bin', 'd_bin']).agg('mean').reset_index()\n",
    "B_W_Metric_count = B_W_Metric_raw.groupby(by=['s_bin', 'd_bin']).agg('count').reset_index()\n",
    "B_W_Metric['B-W'] = B_W_Metric['p'] - B_W_Metric['y']\n",
    "n = len(dataset)\n",
    "bins = len(B_W_Metric)\n",
    "B_W_Metric_pivot = B_W_Metric[B_W_Metric_count['p'] > max(50, n / (3 * bins))].pivot(index=\"s_bin\", columns='d_bin', values='B-W')\n",
    "B_W_Metric_pivot.apply(pd.to_numeric).style.background_gradient(cmap='seismic', axis=None, vmin=-0.2, vmax=0.2).format(\"{:.2%}\", na_rep='')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='d_bin'>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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+OGHdffdd7d2i5fk7O8SPNvSpUv18MMPq2vXrpKkRYsWtWRbV0R1dbXWrl2rjz76SD169NDYsWPt+bU1+/fvV5cuXdSnTx9J0n/9138pJydHZWVl6t27tzIyMjRmzJhW7vL/NMMXguOflJeXW0OHDrWCgoKs4OBga/z48dbXX39tj/t8PisoKKgVO7xySkpK2uzckpKSrEmTJln19fXnjNXX11uTJk2yhg0b1gqdtYy2/LMrLS21evfubTkcDisoKMi64447rPLycnu8Lf+b27RpkxUaGmpFRERYYWFh1qZNm6zu3btbycnJ1t13320FBwdbhYWFrd3mJXE4HNbgwYOtu+66K2BxOBzW0KFDrbvuussaPnx4a7d5Sfr372/99a9/tSzLssrKyqy4uDjL7XZbQ4cOtSIiIqzIyEjr448/buUuL83AgQOtgoICy7Is68UXX7TCw8Otn/zkJ9bKlSutzMxMq2PHjtbLL7/cyl3+HVdyroC0tDSVlpZq2bJlqqys1MyZM+VwOLRlyxZ16dJFFRUV6tGjh+rr61u71SZ77733Ljh++PBhjR07VnV1dS3UUfMJDw/Xu+++q379+jU6fvjwYX33u9/VyZMnW7iz5vHWW29dcPzjjz/Wk08+2SZ/dvfff79Onz6t3NxcVVZWKjMzU++//762bdumXr16qaKiQjExMW1ybrfccovuvvtu/eIXv9Abb7yh//f//p+mTJmiX/7yl5KkWbNmqbi4WFu2bGnlTptu/vz5euGFF/TSSy8FXI1q166d/vjHP55zRa4tCQoKks/nU2RkpB5++GEdOXJEb7/9ttxut06cOKH7779f3bt31+rVq1u71SZr3769PvjgA/Xu3VtDhgzRlClT9Pjjj9vjq1ev1i9/+UsdOnSoFbv8P62dskwUExNj7d6923596tQp67777rMGDx5s/fWvf23T/6ts+J+yw+E4Z2lY31bnFhcXZ61ateq846tWrbJ69+7dcg01swv97M7+GbZFkZGR1nvvvWe/rq+vtyZPnmz16tXL+vOf/9ym/825XC7rww8/tCzLsurq6qyQkBBr//799viBAwesqKio1mrvsu3Zs8e64YYbrCeffNKqra21LMuyQkJCrEOHDrVyZ5fH4XBYFRUVlmVZ1nXXXWdt2bIlYHzHjh1WbGxsa7R22bp27Wrt27fPsqy//9sr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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "B_W_Metric_raw.groupby(by=['d_bin']).agg('count').reset_index().plot.bar(x='d_bin', y='p', legend=False)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "fsrs4anki",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
